2011-12-13 66 views
-1

我在我的主类中有三个线程,如果这些线程正在并发运行,我怎样才能在迭代中随机地发生每个线程?例如,我有:在Java中选择随机线程

线程1

线程2

线程3

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

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

+3

你能澄清你的意思吗?“随机迭代中每个线程的出现?” – templatetypedef 2011-12-13 23:14:58

回答

0

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

或者,您可以让每个线程sleep()的随机时间长度。这应该会产生足够的随机性,但可能不会依赖生产代码,因为您无法保证它们会一直醒来。 (这是99.999999999%可能,他们会的,但小部分弹出的方式比它应该更多,始终当你不掉。)

注意,这最后一个可能最终是这样的:

线程1

线程2

线程1

线程3

线程2

0

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

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