2014-10-28 1 views
0

Например, почему следующий код не выводит приоритет 7?Почему приоритет от getPriority внутри нового потока отличается от приоритета в вызывающем потоке?

public class Test { 
    public static void main(String[] args) { 
     Thread thread = new Thread(new A()); 
     thread.setPriority(7); 
     System.out.println("in main: " + thread.getPriority()); 
     thread.start(); 
    } 
} 

class A extends Thread { 
    @Override 
    public void run() { 
     System.out.println("in thread: " + this.getPriority()); 
    } 
} 

Выход:

in main: 7 
in thread: 5 

ответ

4
new Thread(new A()); 

Вы лечения new A()Runnable как и передать его в отдельный Thread инстанции.

Новый экземпляр Thread не влияет на основание Thread его Runnable.

Вы должны использовать new A() напрямую.

Смежные вопросы