Java 有没有可能让一根线在它的内部休眠?

Java 有没有可能让一根线在它的内部休眠?,java,multithreading,Java,Multithreading,我正在用java做多线程的实验,基本上我想做两个线程,并让它们计数到一个数字 但当他们达到一半时,他们会睡一定的时间。所以我想在FOR循环中放一个IF语句,看看它什么时候到达了一半,如果达到了一半,它就会进入睡眠状态 我运行的是单核cpu atm,因为我在学校的计算机上,所以理论上,当我让第一个线程休眠时,第二个线程应该启动吗 另外,是否可以将第一个线程从第二个线程休眠,反之亦然 线程可能只会导致其自身使用睡眠。即使在单核CPU上运行,JVM也会为所有可运行的线程安排时间。如果您想对每个线程何时

我正在用java做多线程的实验,基本上我想做两个线程,并让它们计数到一个数字

但当他们达到一半时,他们会睡一定的时间。所以我想在FOR循环中放一个IF语句,看看它什么时候到达了一半,如果达到了一半,它就会进入睡眠状态

我运行的是单核cpu atm,因为我在学校的计算机上,所以理论上,当我让第一个线程休眠时,第二个线程应该启动吗


另外,是否可以将第一个线程从第二个线程休眠,反之亦然

线程可能只会导致其自身使用睡眠。即使在单核CPU上运行,JVM也会为所有可运行的线程安排时间。如果您想对每个线程何时运行有更多的控制,那么您需要查看包中的信号量和其他锁定/调度机制


询问更具体的问题,以帮助您解决项目中遇到的问题。

当您开始让一个线程休眠另一个线程,然后让自己休眠时,您正接近一个争用/死锁状态:

您可以使用:

导致当前正在执行的线程休眠(暂时停止 执行),以指定的毫秒数为准 系统计时器和调度程序的精度和准确性。线 不会失去任何监视器的所有权

至于让一个线程暂停另一个线程,您可以公开其他线程可以调用的方法来暂停其他线程的执行

就像其他多线程程序一样,请密切关注


至于你的另一个问题,单核处理器应该能够运行多个线程,所以内核的数量(在本例中)并不重要

我建议您看看这本书,它几乎涵盖了java和并发/多线程的所有内容,包括编码原则和许多示例。
关于问题的第一部分:

当执行到达第一个线程中的sleep()语句时,第二个线程可能已经完成。这是因为JVM分配CPU时间给线程不是基于每个线程的启动时间,而是基于复杂的调度算法。调用
Thread.sleep(1000)
时唯一可以保证的是线程将在该点停止执行至少1000毫秒

第二部分——让一条线从另一条线进入睡眠——已经被其他人很好地解决了。你需要注意比赛情况