Java线程(4)线程池
来源:互联网 发布:淘宝开店身份验证 编辑:程序博客网 时间:2024/06/05 14:58
文章来源:http://blog.sina.com.cn/s/blog_6560efc9010185el.html
自JDK5之后,Java推出了一个并发包,java.util.concurrent,在Java开发中,我们接触到了好多池的技术,String类的对象池、Integer的共享池、连接数据库的连接池、Struts1.3的对象池等等,池的最终目的都是节约资源,以更小的开销做更多的事情,从而提高性能。
- ExecutorService
threadPool 3);//= Executors.newFixedThreadPool( 创建可以容纳3个线程的线程池
- ExecutorService
threadPool //= Executors.newCachedThreadPool(); 线程池的大小会根据执行的任务数动态分配
- ExecutorService
threadPool //= Executors.newSingleThreadExecutor(); 创建单个线程的线程池,如果当前线程在执行任务时突然中断,则会创建一个新的线程替代它继续执行任务
- ScheduledExecutorService
threadPool = Executors.newScheduledThreadPool( 效果类似于Timer定时器
- import
java.util.concurrent.ExecutorService; - import
java.util.concurrent.Executors; - public
class ThreadPoolTest { -
public static void main(String[] args) { -
ExecutorService threadPool = Executors.newFixedThreadPool(3); -
for(int i 1;= i 5;< i++) { -
final int taskID = i; -
threadPool.execute(new Runnable() { -
public void run() { -
for(int i 1;= i 5;< i++) { -
try { -
Thread.sleep(20);// 为了测试出效果,让每次任务执行都需要一定时间 -
} catch (InterruptedException e) { -
e.printStackTrace(); -
} -
System.out.println("第" + "次任务的第"taskID + + "次执行");i + -
} -
} -
}); -
} -
threadPool.shutdown();// 任务执行完毕,关闭线程池 -
} - }
- 第1次任务的第1次执行
- 第2次任务的第1次执行
- 第3次任务的第1次执行
- 第2次任务的第2次执行
- 第3次任务的第2次执行
- 第1次任务的第2次执行
- 第3次任务的第3次执行
- 第1次任务的第3次执行
- 第2次任务的第3次执行
- 第3次任务的第4次执行
- 第2次任务的第4次执行
- 第1次任务的第4次执行
- 第4次任务的第1次执行
- 第4次任务的第2次执行
- 第4次任务的第3次执行
- 第4次任务的第4次执行
- 第3次任务的第1次执行
- 第4次任务的第1次执行
- 第1次任务的第1次执行
- 第2次任务的第1次执行
- 第4次任务的第2次执行
- 第3次任务的第2次执行
- 第2次任务的第2次执行
- 第1次任务的第2次执行
- 第2次任务的第3次执行
- 第3次任务的第3次执行
- 第1次任务的第3次执行
- 第4次任务的第3次执行
- 第2次任务的第4次执行
- 第4次任务的第4次执行
- 第3次任务的第4次执行
- 第1次任务的第4次执行
- 第1次任务的第1次执行
- 第1次任务的第2次执行
- 第1次任务的第3次执行
- 第1次任务的第4次执行
- 第2次任务的第1次执行
- 第2次任务的第2次执行
- 第2次任务的第3次执行
- 第2次任务的第4次执行
- 第3次任务的第1次执行
- 第3次任务的第2次执行
- 第3次任务的第3次执行
- 第3次任务的第4次执行
- 第4次任务的第1次执行
- 第4次任务的第2次执行
- 第4次任务的第3次执行
- 第4次任务的第4次执行
- import
java.util.concurrent.ScheduledExecutorService ; - import
java.util.concurrent.TimeUnit; - public
class ThreadPoolTest { -
public static void main(String[] args) { -
ScheduledExecutorService schedulePool = Executors.newScheduledThreadPool(1); -
// 5秒后执行任务 -
schedulePool.schedule(new Runnable() { -
public void run() { -
System.out.println("爆炸"); -
} -
}, 5, TimeUnit.SECONDS); -
// 5秒后执行任务,以后每2秒执行一次 -
schedulePool.scheduleAtFixedRate(new Runnable() { -
@Override -
public void run() { -
System.out.println("爆炸"); -
} -
}, 5, 2, TimeUnit.SECONDS); -
} - }
0 0
- Java线程(4)线程池
- Java线程:线程池
- java--线程--线程池
- JAVA实现线程池(4)---管理线程池
- Java线程和线程池(一)
- Java线程(二)线程池
- java线程(线程池工作示例)
- Java线程(六)----线程池
- 线程4:线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(五):线程池
- Java线程_07_线程池
- Java线程(五):线程池
- Java线程(六):线程池
- Java线程(五):线程池
- Java线程(六):线程池
- Java线程(六):线程池
- appcan 与 phonegap
- 各大网站CSS代码初始化集合
- Java类加载器深入讲解
- NYOJ 845 无主之地1
- C语言中谁不认识指针?
- Java线程(4)线程池
- 创建线程时使用临时变量容易出现的问题
- Linux内核配置与编译
- UIImagePickerController详解
- linux 2.4调度系统分析
- hdu 5249 KPI set与其迭代器的运用
- 动态绑定之属性检测
- STATIC关键字
- php面向对象