首页 > 学院 > 开发设计 > 正文

多线程3-同步及生命周期

2019-11-08 02:40:17
字体:
来源:转载
供稿:网友

线程同步

1.同步代码块  在代码块上“synchronized”关键字,则此代码块就称为同步代码块 2.同步代码块格式  synchronized(同步对象){   需要同步的代码;  } 3.同步方法  除了代码块可以同步,方法也是可以同步的 4.方法同步格式  synchronized void 方法名称(){}

//没加同步的时候public class MyThread implements Runnable{ PRivate int ticket=5; public void run(){ for(int i=0;i<10;i++){ System.out.println("车票:"+ticket--); } }}//测试public class ThreadTest{ public static void main(String[] args){ MyThread mt=new MyThread(); Thread t1=new Thread(mt); Thread t2=new Thread(mt); Thread t3=new Thread(mt); t1.start(); t2.start(); t3.start(); }}//加同步代码块之后public class MyThread implements Runnable{ private int ticket=5; public void run(){ for(int i=0;i<10;i++){ synchronized(this){ if(ticket > 0){ try{ Thread.sleep(1000); }catch(InterruptedException e){ e.printStackTrace(); } System.out.println("车票:"+ticket--); } } } }}//加同步方法public void run(){ for(int i=0;i<10;i++){ tell(); }}public synchonized void tell(){ if(ticket > 0){ try{ Thread.sleep(500); }catch(InterruptedException e){ e.printStackTrace(); } System.out.println("车票:"+ticket--); }}

生命周期

这里写图片描述 suspend()线程暂时挂起, resume()线程恢复运行, wait()暂停 此三个方法容易引起死锁


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表