版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35346829/article/details/86686285
(一)java线程有五大状态:
1.新生,2.就绪,3.运行,4.死亡,5.阻塞(同步阻塞,等待阻塞,其他阻塞)
(二)状态之间的转换
(三)线程方法
wait() , sleep() 区别:
-sleep() 抱着cpu睡觉,占用资源
-wait() 释放资源
-线程终止的例子
/**
* 0.终止线程的方法
* 1.自然结束 线程体运行完
* 2.加入标志位
* @author peiyu
*
*/
public class ThreadTest1 implements Runnable {
//
private boolean flag = true; // 加入终止标志位
private String name;
public ThreadTest1(String n) {
this.name = n;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(flag) {
System.out.println(name+"-->学习");
}
System.out.println("T-->over");
}
public void setFlag( ) {
flag = false;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ThreadTest1 T = new ThreadTest1("yu");
new Thread(T).start(); // 代理方式,开启线程
for(int i = 0;i<100;++i) {
if(i == 10) {
T.setFlag();
}
System.out.println("main-->"+i);
}
}
}
(四)观察线程状态
package peiyu;
public class Allstate {
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
System.out.println();
Thread t = new Thread( ()->{
for(int i = 0;i< 5;++i) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println( "000" );
}
});
System.out.println(t.getState());
t.start();
System.out.println(t.getState());
int n = Thread.activeCount(); // 活动的线程个数
while(true) {
Thread.sleep(500);
if(t.getState().equals(Thread.State.TERMINATED))
break;
System.out.println(t.getState());
}
}
}