在Java中选择随机线程

时间:2011-12-13 23:11:36

标签: java multithreading random

我的主类中有三个线程,如果它们同时运行,我怎样才能使迭代中每个线程的出现随机?例如,我有:

  

线程1

     

线程2

     

主题3

并且在第一次迭代中它可能看起来像:线程2,线程1,线程3,在第二次迭代中可能有不同的组合。

此外,在这种情况下,我的每个线程都有不同的结果,分配了枚举。 此外,每次执行这三个线程时,都有其他三个线程比较这些线程的结果并根据该结果执行其他执行。然后该过程再次开始。

2 个答案:

答案 0 :(得分:0)

如果您有办法通知他们,您可以将它们存储在数组或列表中,并选择一个随机数来决定您想要的那个。

或者,您可以让每个帖子sleep()持续一段时间。这应该导致足够的随机性,但可能不会依赖于生产代码,考虑到你不能保证它们会被唤醒。 (这可能是它们的99.999999999%,但是这一小部分弹出的方式比它应该的更多,并且总是当你负担不起时。)

请注意,最后一个可能最终会出现以下内容:

  

线程1

     

线程2

     

线程1

     

主题3

     

线程2

答案 1 :(得分:0)

如果您的任务不在同步方法或块中,则任务同时发生。除了强制线程等到另一个线程完成之外,绝对没有办法控制任务的完成顺序,这是非常低效的。

如果您的任务在同步方法或块中,那么首先没有理由进行多线程,因为同步块一次只能由一个线程执行。