向上_少年
2015-04-10 08:43
采纳率: 100%
浏览 6.8k
已采纳

java多线程时程序运行完成为什么不会自动关闭退出?(木有钱了,求指教)

粘贴的大致代码如下:

public static void main(String[] args) {
int thread=0;
ExecutorService pool = Executors.newFixedThreadPool(15);// 创建一个线程池
for (int i =666; i <= 888; i++) {
for (int j = 0; j < 19; j++) {
MyClass t =new MyClass(i,j);//某个继承了runnable的类,细节不重要
pool.execute(t);
}
}//外层for
thread++;
if(thread>=15){ //15个线程都运行结束了
pool.shutdown();
try {
if (!pool.awaitTermination(60, TimeUnit.SECONDS)){
pool.shutdownNow();
}
} catch (InterruptedException e) {
pool.shutdownNow();
Thread.currentThread().interrupt();
}
System.exit(0);
}
//每次运行时,等到功能完成了(如写入文件或打印),程序确实停止工作了,但就是不退出,即eclipse控制台红点没变灰,要手动结束才行。是代码的逻辑问题吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • danielinbiti 2015-04-10 08:56
    已采纳

    没看懂,thread++;
    if(thread>=15){ //15个线程都运行结束了

    这怎么累加到15

    点赞 打赏 评论
  • zry963 2016-07-14 09:17

    因为线程池中的线程使存活的

    点赞 打赏 评论
  • 刘兆贤 2017-06-30 08:14

    你可以用线程池设计超时时间,如果超时在清除线程的同时,无任务执行,则将程序关闭。

    点赞 打赏 评论

相关推荐 更多相似问题