最近我接受了一次java采访。其中一个问题是 假设有两个线程,一个线程永远执行,在这种情况下我们怎么能执行另一个线程?通过调用 join()或 yield()方法?
答案 0 :(得分:0)
join()
将等待给定的线程停止执行,因此您将永远等待第一个线程。
yield()
:
向调度程序提示当前线程是否愿意产生当前使用的处理器。
所以你可以在第一个线程中使用yield(),但是没有必要,线程可以同时执行。
答案 1 :(得分:0)
在这种情况下我们如何执行其他线程?
问题很糟糕。 我们不执行线程:线程执行我们的代码。
如果这两个线程都在我的笔记本电脑上start()
编辑,并且线程A正在永久执行,并且我也希望线程B也可以运行,那么我根本不需要做任何事情。操作系统将确保两个线程都能运行。并且,如果没有其他程序试图同时工作,那么每个线程将获得我的笔记本电脑的八个CPU中的大约100%。