zoukankan      html  css  js  c++  java
  • 线程安全问题

       多线程并发操作同一数据时, 就有可能出现线程安全问题

      使用同步技术可以解决这种问题, 把操作数据的代码进行同步, 不要多个线程一起操作

          多次启动一个线程是非法的,特别是当线程已经结束执行后,不能再重新启动    

      * Vector是线程安全的,ArrayList是线程不安全的
      * StringBuffer是线程安全的,StringBuilder是线程不安全的
      * Hashtable是线程安全的,HashMap是线程不安全的

    public class demon3_ticket {
        /*
         * 铁路售票, 100张  4个窗口卖完
         */
        public static void main(String[] args) {
            new Ticket().start();
            new Ticket().start();
            new Ticket().start();
            new Ticket().start();
        }
    
    }
    
    class Ticket extends Thread{
        private static int ticket = 100;
    
        public void run() {
            while(true){
                synchronized (Ticket.class) {
                    if (ticket <= 0) {
                        break;
                    }
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        
                        e.printStackTrace();
                    }
                    System.out.println(this.getName() + "这是第" + ticket -- + "张票");
                }
                
            }
        }
        
    }
    public class demon4_ticket_runnable {
    
        public static void main(String[] args) {
            MyTicket mt1 = new MyTicket();
            new Thread(mt1).start();
            new Thread(mt1).start(); 
            new Thread(mt1).start();
            new Thread(mt1).start();
        }
    
    }
    
    class MyTicket implements Runnable{
        private int tickets = 100;
        
        public void run() {
            while(true){
                synchronized (Ticket.class) {
                    if (tickets <= 0) {
                        break;
                    }
                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        
                        e.printStackTrace();
                    }
                    System.out.println(Thread.currentThread().getName() + "这是第" + tickets -- + "张票");
                }
                
            }
        }
        
    }

      

    竹杖芒鞋轻胜马,一蓑烟雨任平生。 回首向来萧瑟处,也无风雨也无晴。
  • 相关阅读:
    poj 2947 Widget Factory 夜
    poj 1222 EXTENDED LIGHTS OUT 夜
    poj 3440 Coin Toss 夜
    poj 1166 The Clocks 夜
    poj 3270 Cow Sorting 夜
    poj 3071 Football 夜
    poj 2409 Let it Bead 夜
    poj 1141 Brackets Sequence 夜
    hdu 4311 Meeting point1 夜
    poj 1026 Chipher 夜
  • 原文地址:https://www.cnblogs.com/yaobiluo/p/11354013.html
Copyright © 2011-2022 走看看