绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
Java多线程方法没有被执行
2019-09-16 11:21:15

开启了一个线程池

ExecutorService threadService=Executors.newFixedThreadPool(3);

threadService.submit(new task(Queue));

threadService.submit(new task(Queue));

threadService.submit(new task(Queue));

线程池中放入三个相同的线程,三个线程从同一个阻塞队列拿数据写到文件中。

线程的Run()方法,调用了一个内部方法

public run(){

  file=Queue.take();

  //计数点1:数据取出来(取出来的数据个数)

  writetoFile(file);

  //计数点2:写完文件的个数

}

 

private writetoFile(){

  //计数点3:进入写函数的个数

}

现在队列中放1200个数据,则会发生数据 丢失的情况,因此使用下面的方式对关键点进行计数输出

private static int cout=0;

发现计数点1与1200吻合。计数点2总比计数点3多1,则说明剩下的次数均没有进入doSomething()函数,其中一次的数据如下:

计数点1:1200   //计数点1的数据很稳定(说明:数据都从阻塞队列中拿出来了)

计数点2:1180  //计数点2,3的数据每次都有浮动,但不是1200,总有丢失的情况,说明写函数不是每一次都执行了

计数点3:1181

 

可是顺序结构的代码,为什么会平白无故的没有进入函数呢,就想到了可能是线程的原因 ,还请大佬们指点一下。

分享好友

分享这个小栈给你的朋友们,一起进步吧。

应用开发
创建时间:2020-06-17 15:31:04
应用软件开发是指使用程序语言C#、java、 c++、vb等语言编写,主要是用于商业、生活应用的软件的开发。
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 栈栈
    专家
戳我,来吐槽~