Lavichord 2018-02-11 14:36 采纳率: 0%
浏览 3497
已结题

newFixedThreadPool例子无法运行求解

@Test
public void test1() {
    ExecutorService fixedThreadPool = Executors.newFixedThreadPool(3);
    for (int i = 0; i < 10; i++) {
        final int index = i;
        fixedThreadPool.execute(new Runnable() {

            @Override
            public void run() {
                try {
                    System.out.println(index);
                    Thread.sleep(2000);
                } catch (Exception e) {
                    e.printStackTrace();
                } 
            }
        });
    }
}

以上是我在别的博客找到的例子,但是这个例子无法实现“每2秒打印3个数字”这个效果。前三个线程被执行,但是后面加入的都不行。for并没有被阻塞。

  • 写回答

11条回答

  • q515104037 2018-10-31 19:51
    关注

    非main函数下,你的测试函数的主线程,不会等待线程池中的其他线程结束,就结束线程了!你改成主函数就正常了,改成被主函数调用也正常了。也可以在测试函数的for循环外增加等待时间,或者增加判断所以线程是否完全结束。

    评论

报告相同问题?

悬赏问题

  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员
  • ¥15 matlab生成电测深三层曲线模型代码