• JAVA中多线程的数据安全问题


    package Multithreading;
    
    /*
           出现数据安全的原因
           1。是否是多线程环境
           2。是否是共享数据
           3。是否有多条语句操作共享数据(打破此条件)
    
           同步代码块的好处和弊端
           好处:解决了多线程的数据安全问题
           弊端:当线程很多时,因为每个线程都会去判断同步上的锁,这里很耗资源的,无形中会降低程序的运行效率
        对于非静态的方法我们可以直接用synchronized来修饰 对应的代码块则用this作为锁的类
        对于静态方法我们也用synchronized来修饰 对应代码块则用BuyTiket.class 作为锁的类
        
    */ public class BuyTicket implements Runnable{ int a=100; private Object obj = new Object(); //这里保证线程用的是同一把锁进行锁定 @Override public void run() { while (true){ synchronized (obj) { if (a > 0) { try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println(Thread.currentThread().getName() + "正再出售第" + a + "张票"); a--; } } } } }
    package Multithreading;
    
    public class BuyTicketDemo {
        public static void main(String[] args) {
            BuyTicket b1 = new BuyTicket();
            Thread t1 = new Thread(b1,"窗口1");
            Thread t2 = new Thread(b1 ,"窗口2");
            Thread t3 = new Thread(b1,"窗口3");
            t1.start();
            t2.start();
            t3.start();
        }
    }
     
     
     
  • 相关阅读:
    【Vijos1159】岳麓山上打水 [迭代加深]
    【POJ3134】 Power Calculus [迭代加深]
    【2019.1.24】 搜索,动规 经典题目体验赛
    【noip2017】
    【poj3311】Hie With The Pie [状压dp]
    [bzoj3938] [Uoj #88] Robot
    [洛谷P4707] 重返现世
    [洛谷P4097] [HEOI2013] Segment
    KD-tree 学习小记
    NOI2019 酱油记
  • 原文地址:https://www.cnblogs.com/phpwyl/p/16114499.html
Copyright © 2020-2023  润新知