Java-多线程同步疑问

2019-06-03 16:28发布

问题:我有一个想法想要实现,例如:当我自己做一个API让别人用时,别人会有很多东西会传过来,我的业务逻辑会一个个处理,但这个务必会占用很多时间,我就想着能不能把一个个业务逻辑分配给多线程去处理,就有了如下简单的代码:

这些代码就产生如下随机的结果:

我的想法是,1~20都可以正常打印出来,可以不按顺序,但是一定不可以重复。

请问各位大神,有没有好的建议,帮助下初学者。不甚感激。

标签: java javase
1条回答
别忘想泡老子
2楼-- · 2019-06-03 17:23

num()方法应该是你要去多线程处理的业务逻辑,在main方法中,由于循环调用num方法时没有加锁,会出现第一个线程还未调用num(lt_num2)时,已经有多个线程将lt_num2进行了++,导致第一个线程调用num(lt_num2)时,lt_num2实际并不是1。需要在 lt_num2=i 前加锁,调用num()方法后再释放锁。

查看更多
登录 后发表回答