易截截图软件、单文件、免安装、纯绿色、仅160KB

java多线程的效率就一定高吗?

   很久没上来了,发现虽然资料和书看的很多,但是很久没碰的东西还是很容易淡忘。以后希望能多记录吧。
   今天玩了把线程池,并对其中的参数做了一些调整,并记录在多并发情况下线程数对各种情况的反应。程序是网上找的,并作了稍微修改。
java的线程池实现,ThreadPool
package net.zj.hz.yk.threadpool;
import java.util.LinkedList;
public class ThreadPool extends ThreadGroup {
private boolean isClosed = false; // 线程池是否关闭
private LinkedList workQueue; // 工作队列
private static int threadPoolID = 1; // 线程池的id
public ThreadPool(int poolSize) {
super(threadPoolID + "");// 指定ThreadGroup的名称
setDaemon(true); // 继承到的方法,设置是否守护线程池
workQueue = new LinkedList(); // 创建工作队列
for (int i = 0; i < poolSize; i++) {
new WorkThread(i).start(); // 创建并启动工作线程,线程池数量是多少就创建多少个工作线程
}
}
/** 等待工作线程把所有任务执行完毕 */
public void waitFinish() {
synchronized (this) {
isClosed = true;
notifyAll(); // 唤醒所有还在getTask()方法中等待任务的工作线程
}
// activeCount() 返回该线程组中活动线程的估计值。
Thread[] threads = new Thread[activeCount()];
// enumerate()方法继承自ThreadGroup类,根据活动线程的估计值获得线程组中当前所有活动的工作线程
int count = enumerate(threads);
for (int i = 0; i < count; i++) { // 等待所有工作线程结束
try {
threads[i].join(); // 等待工作线程结束
} catch (InterruptedException ex) {
ex.printStackTrace();
}
}
}
/** 关闭线程池 */
public synchronized void closePool() {
if (!isClosed) {
// 等待工作线程执行完毕
waitFinish();
isClosed = true;
// 清空工作队列
workQueue.clear();
// 中断线程池中的所有的工作线程,此方法继承自ThreadGroup类
interrupt();
}
}
/** 向工作队列中加入一个新任务,由工作线程去执行该任务 */
public synchronized void execute(Runnable task) {
if (isClosed) {
throw new IllegalStateException();
}
if (task != null) {
// 向队列中加入一个任务


相关文档:

JAVA主函数详解

JAVA中的主函数是我们再熟悉不过的了,相信每个学习过JAVA语言的人都能够熟练地写出这个程序的入口函数,但对于主函数为什么这么写,其中的每个关键字分别是什么意思,可能就不是所有人都能轻松地答出来的了。我也是在学习中碰到了这个问题,通过在网上搜索资料,并加上自己的实践终于有了一点心得,不敢保留,写出来与大家 ......

java 比较时间

1. import java.text.DateFormat;
2. import java.text.ParseException;
3. import java.util.Date;
4.
5. /**
6. * @description 計算两个日期相差的天数
7. * @author ZhouJingxian
8. *
9. */
10. public class CountDate {
11.
12. ......

java Map 遍历速度最优解

第一种:
Map map = new HashMap();
Iterator iter = map.entrySet().iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
Object key = entry.getKey();
Object val = entry.getValue();
}
效率高,以后一定要使用此种方式!
第二种:
Map map = new HashMap();
Iterator iter = ma ......

java ip地址转换为长整型

java ip地址转换为长整型;
public class Util {
   
     /**
     * 字符串ip转换为long
     * @param 字符串ip
     * @return
     */
    public static long getStr ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号