线程的状态---十九
来源:互联网 发布:绍兴网络电视台 跃马 编辑:程序博客网 时间:2024/05/02 00:05
/**
* 1)线程的状态
* 阻塞(sleep(),yiled(),jion())
* / \
* / \
* (new)新生--(start())就绪-------运行-----死亡()
* 2)停止线程(建议下面2中方式,温柔不暴力)
* 1、自然终止:线程体执行完毕,结束任务
* 2、外部干涉
* a、定义flag属性标识 b、线程体使用flag标识 c、对外提供改变flag属性的方法
* 3)线程阻塞
* 1、join(合并线程)成员方法:t.join()方法阻塞调用此t成员方法jion的线程(calling thread),直到线程t完成,
* 此线程再继续;通常用于在main()主线程内,等待t线程完成再结束main()主线程。
* 从这里应该能猜的到,Thread类的jion方法是加锁的,并且是个陷进,谁调用,谁在外面等。
* 2、yield静态方法: 暂停自己的线程,让出cpu调度,品格高尚!
* 3、sleep静态方法:休眠(睡觉),不释放锁 (抱着锁睡),其他线程不能访问,除非睡醒,结束线程。
* 应用场景:a、倒计时 b、模拟网络延时
*/
public class StateThr {
public static void main(String[] args) throws InterruptedException {
FourThr fth=new FourThr("马云"); //新生
Thread proxy=new Thread(fth,"黄牛甲");
proxy.start();//就绪
//就绪后,等待cpu调度分配时间片---运行
Thread.sleep(5000);//放票时间5秒
fth.stop();//线程终止,死亡
}
}
class FourThr implements Runnable{
private int tickets=50;
private String name;
private boolean flag=true;
public FourThr(String name) {
this.name = name;
}
@Override
public void run() {//线程体
while(flag){
try {
task();
Thread.sleep(500); //模拟延时时间,阻塞
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void task(){
if(tickets>0){
System.out.println(Thread.currentThread().getName()+",帮"+this.name+",抢到第"+(tickets--)+"张票");
}
}
public void stop(){
flag=false;
}
}
* 1)线程的状态
* 阻塞(sleep(),yiled(),jion())
* / \
* / \
* (new)新生--(start())就绪-------运行-----死亡()
* 2)停止线程(建议下面2中方式,温柔不暴力)
* 1、自然终止:线程体执行完毕,结束任务
* 2、外部干涉
* a、定义flag属性标识 b、线程体使用flag标识 c、对外提供改变flag属性的方法
* 3)线程阻塞
* 1、join(合并线程)成员方法:t.join()方法阻塞调用此t成员方法jion的线程(calling thread),直到线程t完成,
* 此线程再继续;通常用于在main()主线程内,等待t线程完成再结束main()主线程。
* 从这里应该能猜的到,Thread类的jion方法是加锁的,并且是个陷进,谁调用,谁在外面等。
* 2、yield静态方法: 暂停自己的线程,让出cpu调度,品格高尚!
* 3、sleep静态方法:休眠(睡觉),不释放锁 (抱着锁睡),其他线程不能访问,除非睡醒,结束线程。
* 应用场景:a、倒计时 b、模拟网络延时
*/
public class StateThr {
public static void main(String[] args) throws InterruptedException {
FourThr fth=new FourThr("马云"); //新生
Thread proxy=new Thread(fth,"黄牛甲");
proxy.start();//就绪
//就绪后,等待cpu调度分配时间片---运行
Thread.sleep(5000);//放票时间5秒
fth.stop();//线程终止,死亡
}
}
class FourThr implements Runnable{
private int tickets=50;
private String name;
private boolean flag=true;
public FourThr(String name) {
this.name = name;
}
@Override
public void run() {//线程体
while(flag){
try {
task();
Thread.sleep(500); //模拟延时时间,阻塞
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
private void task(){
if(tickets>0){
System.out.println(Thread.currentThread().getName()+",帮"+this.name+",抢到第"+(tickets--)+"张票");
}
}
public void stop(){
flag=false;
}
}
阅读全文
0 0
- 线程的状态---十九
- 线程的状态
- 线程的状态
- 线程的状态
- 线程状态的转换
- 线程状态的转换
- 线程的状态转换
- 线程的状态转换
- 线程状态的转换
- 浅谈线程的状态
- 线程的状态转换
- 线程的分离状态
- 获得线程的状态
- 线程的各个状态
- 线程的状态转换
- 线程的分离状态
- 线程的分离状态
- 线程状态的转换
- uikit——Auto Layout——intrinsic content size
- HDU-Common Subsequence
- iconv命令详解
- Java通过Executors提供四种线程池
- Spring-data-redis:特性与实例
- 线程的状态---十九
- centos6.5系统下将Python2.6.6升级为Python3.5.0
- 欢迎使用CSDN-markdown编辑器
- Java笔记(三)之循环结构
- c++ class does not name a type
- KCF跟踪算法笔记
- 微信小程序--官方文档补充【操作反馈】--modal组件
- UCOS_1基础
- BitOperation