Java中随机线程的选择

Java中随机线程的选择,java,multithreading,random,Java,Multithreading,Random,我的主类中有三个线程,如果它们同时运行,我如何使迭代中每个线程的出现随机?例如,我有: 线程1 线程2 线程3 在第一次迭代中,它可能看起来像:线程2,线程1,线程3,在第二次迭代中,可能有不同的组合 此外,我的每个线程都有不同的结果。在这种情况下,会分配一个枚举。 此外,每次执行这三个线程时,都会有其他三个线程比较这些线程的结果,并基于该结果执行其他执行。然后这个过程再次开始。如果你有办法通知他们,你可以将他们存储在一个数组或列表中,然后选择一个随机数来决定你想要哪个 或者,您可以让每个线程s

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

线程1

线程2

线程3

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

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

如果你有办法通知他们,你可以将他们存储在一个数组或列表中,然后选择一个随机数来决定你想要哪个

或者,您可以让每个线程
sleep()
随机运行一段时间。这应该会导致足够的随机性,但生产代码可能不依赖于此,因为您不能保证它们会醒来。(他们有99.99999999%的可能会这样做,但这一小部分会突然出现,而且总是在你负担不起的时候。)

请注意,最后一个结果可能是:

线程1

线程2

线程1

线程3

线程2


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


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

你能解释一下“随机迭代中每个线程的出现”是什么意思吗?这些线程在做什么工作?他们是在打印一行还是在工作队列中消费?