(1)优先级有10(1-10)个,老毕说不建议用数字,要用MAX_PRIORITY MIN_PRIORITY NORM_PRIORITY 即最大,最小,正常。
(2)你的join()方法理解错误。老毕原话:当A线程执行到了B线程的.join()方法时,A就会等待。等B线程执行完毕,A才会执行。你的代码中main()方法就是A线程。t1和t2没有执行与被执行的关系(读完t1,t1就玩命的执行它的线程,下面代码有main()执行,t2不执行t1才高兴呢). 所以t2就不满足A线程的条件。
我把你的代码加了个mian()方法。可以发现 t2.join() 是终止了main().
package com.zzh.bean;
class MyThreadDemo implements Runnable{
public void run(){
for(int i=0;i<5;i++)
{
System.out.println(Thread.currentThread().getName()+"----"+i);
try {
Thread.sleep(300);
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}}
}
public class ThreadTestDemo {
public static void main(String args[]) throws InterruptedException{
Thread t1=new Thread(new MyThreadDemo(),"Thread-1");
t1.setPriority(5);
t1.start();
Thread t2=new Thread(new MyThreadDemo(),"Thread—2");
t2.start();
t2.join();
for (int x= 0;x<5 ;x++ )
{
System.out.println("hahha");
}
}
}
/*
Thread—2----0
Thread-1----0
Thread—2----1
Thread-1----1
Thread-1----2
Thread—2----2
Thread-1----3
Thread—2----3
Thread-1----4
Thread—2----4
hahha
hahha
hahha
hahha
hahha
*/ |