join方法
方法说明:等待该线程终止。
通俗来说就是 当A线程执行到了B线程的.join()方法时,A就会等待。等B线程都执行完,A才会执行。
样例代码如下:
class Demo implements Runnable {
public synchronized void run() {
for (int x = 0; x < 70; x++) {
try {Thread.sleep(1);} catch (InterruptedException e) {}
System.out.println(Thread.currentThread().toString() + "....." + x);
}
}
}
class JoinDemo {
public static void main(String[] args) throws Exception {
Demo d = new Demo();
Thread t1 = new Thread(d);
Thread t2 = new Thread(d);
t1.start();
t2.start();
t1.join();// 让出执行权,先让t1执行完。。
System.out.println("over");
}
}
运行结果为:
Thread[Thread-0,5,main].....0
Thread[Thread-0,5,main].....1
。。。。
Thread[Thread-0,5,main].....69
over
Thread[Thread-1,5,main].....0
Thread[Thread-1,5,main].....1
。。。。
Thread[Thread-1,5,main].....68
Thread[Thread-1,5,main].....69
优先级
优先级其实可以认为就是线程的权重,权重高的,CPU分配的资源就相对多些!
我们开辟的线程默认的优先级是 5 ,上面例子的输出结果也有显示。
设置优先级的API为:
new Thread().setPriority(int newPriority)
yield方法
方法说明:暂停当前正在执行的线程对象,并执行其他线程。
如果在一个多线程运行的代码中,如果不添加减缓线程运行的方法时,那么有可能某个线程会输出一大片内容后其他线程再执行
如果添加了yield方法,那么就可以减缓一下当前线程的执行速度,就可以达到其他线程都被平均执行的可能!