• 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();
        }
    }
     
     
     
  • 相关阅读:
    *** 82 删除排序链表中的重复元素II
    83 删除排序链表中的重复元素
    61 旋转链表
    ASP.NET MVC3 ModelState.IsValid为false的问题
    ServletContext
    ServletConfig
    Servlet线程安全
    Servlet的一些细节(2)
    Servlet的一些细节(1)
    Servlet的接口实现类
  • 原文地址:https://www.cnblogs.com/phpwyl/p/16114499.html
Copyright © 2020-2023  润新知