黑马程序员技术交流社区
标题:
关于线程
[打印本页]
作者:
杨文宇
时间:
2012-8-4 18:58
标题:
关于线程
public class Test {
public static void main(String[] args) {
//第一种
/*
ScheduledExecutorService se = Executors.newScheduledThreadPool(1);
se.scheduleAtFixedRate(new Runnable(){
public void run() {
System.out.println(1);
}
}, 1, 1, TimeUnit.SECONDS);
*/
//第二种
Executors.newSingleThreadExecutor().execute(new Runnable(){
public void run() {
while(true){
try {
Thread.sleep(1000);
System.out.println(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
});
}
}
复制代码
这两种方法有什么区别?
作者:
余明辉
时间:
2012-8-5 02:36
newScheduledThreadPool(1)可以控制线程池里面的线程的数量,如果里面的线程因为失败而结束的话,系统会再创建一个新的线程来执行,还有一点比较重要的是,只有当任务的执行时间到来的时候,才会真正启动一个线程,其余时间都是在查询任务的状态
newSingleThreadExecutor(),从英文可以看出大概意思,“new一个单一的线程执行”,也就是说只有一个线程,而且是按顺序的往下执行任务,先提交的任务先执行,如果这个线程在执行的过程中出现问题或者异常,系统会再创建一个新的线程去执行后面的任务,以保证不会影响到后面任务的执行
我也是刚刚学到线程池,以上是我的了解,希望可以帮到你
作者:
杨文宇
时间:
2012-8-5 03:36
余明辉 发表于 2012-8-5 02:36
newScheduledThreadPool(1)可以控制线程池里面的线程的数量,如果里面的线程因为失败而结束的话,系统会再 ...
感谢!:handshake
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2