欢迎光临散文网 会员登陆 & 注册

解决并发的同步方法的代码

2020-04-13 10:50 作者:小垃圾kiki  | 我要投稿
package cn.jd.syn;

/*
 * 线程安全:在并发时保证数据的正确性,同时保证效率尽可能高
 * synchronized
 * 1.同步方法(在方法上面加synchronized)
 * 2.同步块
 */

public class SynTest01 {

    public static void main(String[] args) {
        //一份资源
        SafeWeb12306  web=new SafeWeb12306();
                //多个代理
                new Thread(web,"laoda").start();
                new Thread(web,"laoer").start();
                new Thread(web,"laosan").start();

    }

}
class SafeWeb12306 implements Runnable{
    //票数
    private int ticketNums=3;
    private boolean flag=true;
    @Override
    public void run() {
        while(flag) {
            test();
        }
        
    }
    //线程安全,同步
    public synchronized void test() {
        if(ticketNums<0) {
            flag=false;
            return;
        }
        //模拟网络延时
        try {
            Thread.sleep(200);  
            //进入了阻塞状态,然后200s以后我就重新等待CPU的调用
            //继续执行下面的代码
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println(Thread.currentThread().getName()+"-->"+ticketNums--);
    }
    

}

解决并发的同步方法的代码的评论 (共 条)

分享到微博请遵守国家法律