3.线程状态
线程的状态就像人一样,有着生老病死。下面看一下线程的状态:
3.1. 线程的方法
方法 | 说明 |
---|---|
setPriority(int newPriority) | 更改线程的优先级 |
static void sleep(long millis) | 在指定的毫秒数内,让当前正在执行的线程休眠 |
void join() | 等待该线程终止(插队) |
static void yield() | 暂停当前正在执行的对象,并执行其他线程(礼让) |
void interrupt() | 中断线程,别用这个方法 |
boolean isAlive() | 测试线程是否处于活动状态 |
3.2. 停止线程
- 1.不推荐使用 JDK提供的
stop()
、destroy()
方法。【已废弃】 - 2.推荐线程自己停止下来.
- 3.建议使用一个标志位进行终止变量。当
flag = false
,则终止线程运行。
/**
* 停止线程:
* 1.推荐线程正常停止--> 利用次数,不建议死循环。
* 2.建议使用标志位---> 设置一个标志位
* 3.不要使用stop()、destroy()等过时或者JDK不建议使用的方法
*/
public class TestThreadStop_1 implements Runnable{
//1.线程中定义线程体使用的标识
private boolean flag = true;
@Override
public void run() {
int i = 0;
//2.线程体使用该标识
while (flag) {
System.out.println("run ... Thread"+ i++);
}
}
//3.对外提供方法改变标识
public void stopThread() {
this.flag = false;
}
public static void main(String[] args) {
TestThreadStop_1 threadStop = new TestThreadStop_1();
new Thread(threadStop).start();
for (int i = 0; i < 100; i++) {
System.out.println("main----- "+ i);
if (i == 80) {
//调用 stopThread方法切换标志位,让线程终止。
threadStop.stopThread();
System.out.println(Thread.currentThread().getName() +" ----线程该终止了!");
}
}
}
}
3.3. 线程休眠
//TODO
4.线程同步(重点)
5.线程通信
wait();
notify()
生产者;消费者
6.高级主题
线程池;