【发布时间】:2009-12-28 20:36:48
【问题描述】:
在下面的代码中,我试图通过产生较低优先级的线程来运行较高优先级的线程。但这似乎不起作用,较高优先级的线程似乎在较低优先级的线程完成后运行。谁能解释我做错了什么?
import java.util.ArrayList;
import java.util.List;
public class TestThreadPriority extends Thread {
static List<String> messages = new ArrayList<String>();
public void run() {
Thread t = Thread.currentThread();
int priority = t.getPriority();
String name = t.getName();
messages.add(name + ":" + priority);
Thread.yield();
messages.add(name + ":" + priority);
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread t = Thread.currentThread();
t.setPriority(MIN_PRIORITY);
int priority = t.getPriority();
String name = t.getName();
messages.add(name + ":" + priority);
Thread tp1 = new TestThreadPriority();
tp1.setPriority(MIN_PRIORITY);
Thread tp2 = new TestThreadPriority();
tp2.setPriority(MAX_PRIORITY);
tp1.start();
tp2.start();
Thread.yield();
messages.add(name + ":" + priority);
for(int i = 0; i < messages.size(); i++) {
System.out.println((i+1) + ". " + messages.get(i));
}
}
}
输出是:
- 主要:1
- 线程-0:1
- 线程-0:1
- 主要:1
- 线程 1:10
- 线程 1:10
非常感谢任何帮助。
谢谢, 方格
【问题讨论】:
-
如果您使用的是 Linux,另请参阅另一个问题:stackoverflow.com/questions/1662185/…
标签: java multithreading