多线程的状态
线程方法
方法 | 说明 |
1. setPriority(int newPriority) | 更改线程的优先级 |
2.static void sleep(long millis) | 在指定的毫秒数内让当前正在执行的线程休眠 |
3.void join() | 等待该线程终止 |
4.static void yield() | 暂停当前正在执行的线程对象, 并执行其他线程 |
5.void interrupt() | 中断线程,别用这个方式 |
6.boolean isAlive() | 测试线程是否处于活动状态 |
线程停止
如图所示原有提供一个destroy()的方法,但是已经过期(已废弃),不建议使用;还有就是stop()方法也是被废弃了:
因此采用一个标志位来进行终止变量,当flag=false时,则终止线程运行代码块:
package stopThread;
public class stopThread implements Runnable {
private boolean flag = true;
@Override
public void run() {
int i = 0;
while (flag) {
System.out.println("run:" + i);
i++;
}
}
public void stoppppp() {
flag = false;
}
public static void main(String[] args) {
stopThread myThread = new stopThread();
new Thread(myThread).start();
for (int i = 0; i < 1000; i++) {
System.out.println("main"+i);
if (i == 500) {
myThread.stoppppp();
System.out.println("线程终止");
}
}
}
}
运行结果如下图:
线程睡眠
- sleep(时间)指定当前线程阻塞的毫秒数;
- sleep存在异常 InterruptedException e;
- sleep时间达到后线程进入就绪状态;
- sleep可以模拟网络延时,倒计时等;
- 每一个对象都有一个锁,sleep不会释放锁;