【发布时间】:2012-06-27 21:02:13
【问题描述】:
我的理解是理论上线程是并行执行的。 JVM决定;当资源可用时,从等待线程队列中选择哪个线程(基于某种算法)。
因此我们无法为线程提供/强制执行序列。
假设我的 java 应用程序有 3 个线程,t1、t2 和 t3。
出于某些特定原因;我希望线程按以下顺序执行: t3 然后 t1 然后 t2。
可以这样做吗? java是否提供了任何方法来做到这一点?
【问题讨论】:
-
你能编辑你的帖子来解释为什么你想这样做吗?
-
如果你想要顺序执行,那你为什么要使用线程呢?
-
是的 - 最好的方法是将三个线程中的代码放在一个线程中。
-
@Gary 它没有我现在从事的任何工作的实际背景。我正在刷新我的理解,这个问题出现在我的脑海中。
-
@Ayusman 好吧,不。没有办法扩展最终类,但是通过正确的同步和锁存器,您可以按顺序执行线程。它看起来像:
ThreadA: work(); latchB.countDown();+ThreadB: latchB.await(); moreWork(); latchC.countDown();等。但是使用多线程来模拟单线程行为有点……奇怪。所以这不是技术上的矛盾,只是太复杂了。
标签: java multithreading