zoukankan      html  css  js  c++  java
  • 多线程列子

    /**

     * 

     * 

     * 模拟火车站售票窗口,开启3个窗口售票,总票数是100张,3个窗口在卖 此程序存在线程安全问题,打印车票是,会出现重票,错票

     * 1.为什么出现线程安全?操作共享数据过程中,一个线程没有操作完,另外一个线程进入,导致共享数据存在安全问题

     * 2.解决,让一个线程操作共享数据完毕后,其他线程方可参与共享数据的操作 3,Java实现线程同步 方式一,同步代码块(

     * synchronized(同步监视器){ 需要被同步的代码块,即操作共享数据的代码}

     * 这里,监视器指的是,由一个类的对象来来充当(任何一个对象都可以来充当),那个线程获取此监视器,谁就执行大括号里的同步代码 ), 方式二,同步方法

     */

    class Window1 implements Runnable {

    static int ticket = 100;// 共享数据

    Object obj = new Object();

    public void run() {

    while (true) {

    synchronized (obj) {

    if (ticket > 0) {

    System.out.println(Thread.currentThread().getName() + "票号为:" + ticket--);

    } else {

    break;

    }

    }

    }

    }

    }

    public class TestWindow2 {

    public static void main(String[] args) {

    Window1 w = new Window1();

    Thread w1 = new Thread(w);

    Thread w2 = new Thread(w);

    Thread w3 = new Thread(w);

    w1.start();

    w2.start();

    w3.start();

    }

    }

  • 相关阅读:
    js
    原型、原型链、闭包、继承
    js6.22
    js
    js
    在浏览器窗口上添加一个遮罩层
    git使用笔记
    前端开发面试题
    Web Worker
    js实现图片预加载
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/6428584.html
Copyright © 2011-2022 走看看