t1准备计算 t1感觉累了,开始睡觉 t1睡醒了,开始计算 t1计算完成 t2准备计算 t2感觉累了,开始睡觉 t2睡醒了,开始计算 t2计算完成
线程合并
线程合并涉及到三个方法,如下:
void |
join() 等待该线程终止。 |
void |
join(long millis)等待该线程终止的时间最长为 millis 毫秒。 |
void |
join(long millis, int nanos)等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。 |
public class JoinTest {
public static void main(String[] args) throws InterruptedException {
JoinThread t1 = new JoinThread("t1");
JoinThread t2 = new JoinThread("t2");
t1.start();
t2.start();
t1.join();
t2.join();
System.out.println("主线程开始执行!");
}
}
class JoinThread extends Thread {
public JoinThread(String name) {
super(name);
}
public void run() {
for(int i = 1; i <= 10; i++)
System.out.println(getName() + getId() + "执行了" + i + "次");
}
} t1和t2都执行完才继续主线程的执行,所谓合并,就是等待其它线程执行完,再执行当前线程,执行起来的效果就好像把其它线程合并到当前线程执行一样。
线程优先级
线程最低优先级为1,最高优先级为10,看起来就有10个级别,但这10个级别能不能和CPU对应上,还未可知,Thread类中提供了优先级的三个常量,如下:
| java.lang.Thread | ||
|---|---|---|
public static final int |
MAX_PRIORITY |
10 |
public static final int |
MIN_PRIORITY |
1 |
public static final int |
NORM_PRIORITY |
5 |
wait()和sleep()区别
区别太大了,但是在Java线程面试题中是很常见的问题,相信你 阅读过本专栏后,能够轻松的解答,这里不再赘述。 本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17560467,转载请注明。