83、解决线程安全问题方式一:使用同步代码块

一、格式:
    synchronized(锁对象){
        可能会出现线程安全问题的代码(访问共享数据的代码)
    }
 二、注意:
    1、代码块中的锁对象,可以是任意的对象。
    2、但是必须保证多个线程使用的是同一个锁对象。
    3、锁对象作用:把同步代码块锁住,只让一个线程在同步代码块中执行

三、举例

public class Demo02Synchronized implements Runnable{
    private int ticketNum = 100;

    Object obj = new Object();

    @Override
    public void run() {
        while (true){
            synchronized (obj){
                if(ticketNum > 0){
                    //为了增强显示冲突效果,加入休眠
                    try {
                        Thread.sleep(10);
                        System.out.println(Thread.currentThread().getName() + "正在出售第"
                                + ticketNum + "张票");
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                /*System.out.println(Thread.currentThread().getName() + "正在出售第"
                        + ticketNum + "张票");*/
                ticketNum--;
                }
            }
        }
    }
}

 

public class Demo02 {
    public static void main(String[] args) {
        Demo02Synchronized run = new Demo02Synchronized();
        Thread t1 = new Thread(run);
        Thread t2 = new Thread(run);
        Thread t3 = new Thread(run);
        t1.start();
        t2.start();
        t3.start();
    }
}

输出结果:

Thread-2正在出售第100张票
Thread-2正在出售第99张票
Thread-2正在出售第98张票
Thread-2正在出售第97张票
Thread-2正在出售第96张票
Thread-2正在出售第95张票
Thread-2正在出售第94张票
Thread-2正在出售第93张票
Thread-2正在出售第92张票
Thread-2正在出售第91张票
Thread-2正在出售第90张票
Thread-2正在出售第89张票
Thread-2正在出售第88张票
Thread-2正在出售第87张票
Thread-2正在出售第86张票
Thread-2正在出售第85张票
Thread-2正在出售第84张票
Thread-2正在出售第83张票
Thread-2正在出售第82张票
Thread-2正在出售第81张票
Thread-2正在出售第80张票
Thread-2正在出售第79张票
Thread-2正在出售第78张票
Thread-2正在出售第77张票
Thread-2正在出售第76张票
Thread-2正在出售第75张票
Thread-2正在出售第74张票
Thread-2正在出售第73张票
Thread-2正在出售第72张票
Thread-2正在出售第71张票
Thread-2正在出售第70张票
Thread-2正在出售第69张票
Thread-2正在出售第68张票
Thread-2正在出售第67张票
Thread-2正在出售第66张票
Thread-2正在出售第65张票
Thread-2正在出售第64张票
Thread-2正在出售第63张票
Thread-2正在出售第62张票
Thread-2正在出售第61张票
Thread-2正在出售第60张票
Thread-2正在出售第59张票
Thread-2正在出售第58张票
Thread-2正在出售第57张票
Thread-2正在出售第56张票
Thread-2正在出售第55张票
Thread-2正在出售第54张票
Thread-2正在出售第53张票
Thread-2正在出售第52张票
Thread-2正在出售第51张票
Thread-2正在出售第50张票
Thread-2正在出售第49张票
Thread-2正在出售第48张票
Thread-2正在出售第47张票
Thread-2正在出售第46张票
Thread-2正在出售第45张票
Thread-2正在出售第44张票
Thread-2正在出售第43张票
Thread-2正在出售第42张票
Thread-2正在出售第41张票
Thread-2正在出售第40张票
Thread-2正在出售第39张票
Thread-2正在出售第38张票
Thread-2正在出售第37张票
Thread-2正在出售第36张票
Thread-2正在出售第35张票
Thread-2正在出售第34张票
Thread-2正在出售第33张票
Thread-2正在出售第32张票
Thread-2正在出售第31张票
Thread-2正在出售第30张票
Thread-2正在出售第29张票
Thread-2正在出售第28张票
Thread-2正在出售第27张票
Thread-2正在出售第26张票
Thread-2正在出售第25张票
Thread-2正在出售第24张票
Thread-2正在出售第23张票
Thread-2正在出售第22张票
Thread-2正在出售第21张票
Thread-2正在出售第20张票
Thread-2正在出售第19张票
Thread-2正在出售第18张票
Thread-2正在出售第17张票
Thread-2正在出售第16张票
Thread-2正在出售第15张票
Thread-2正在出售第14张票
Thread-2正在出售第13张票
Thread-2正在出售第12张票
Thread-2正在出售第11张票
Thread-2正在出售第10张票
Thread-2正在出售第9张票
Thread-2正在出售第8张票
Thread-2正在出售第7张票
Thread-2正在出售第6张票
Thread-2正在出售第5张票
Thread-2正在出售第4张票
Thread-2正在出售第3张票
Thread-2正在出售第2张票
Thread-1正在出售第1张票

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值