Guy*_*Guy 27 java multithreading thread-priority
我有一个程序,运行在几个线程中.主线程与其他线程共享一个对象,在main中我有一个调用:
synchronized(obj){
do stuff
}
Run Code Online (Sandbox Code Playgroud)
我怀疑主线程是饿死的,无法访问obj
.如何提高主线程的优先级或默认情况下它是否已高于其他线程?
Mac*_*rse 44
Thread类中有一个setPriority()方法.
检查这个javadoc.
将线程优先级设置为最大值
public static void main(String args[]) {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
// Your main code.
}
Run Code Online (Sandbox Code Playgroud)
你可以使用setPriority()方法.例如:
new MyThread("Foo").start();
Thread bar = new MyThread("Bar");
bar.setPriority( Thread.NORM_PRIORITY + 1 );
bar.start();
Run Code Online (Sandbox Code Playgroud)
这给了新的优先权,应该迅速接管Foo
编辑:
要回答您的评论,您可以使用以下方法设置max priortiy:
bar.setPriority( Thread.MAX_PRIORITY );
Run Code Online (Sandbox Code Playgroud)