zoukankan      html  css  js  c++  java
  • [javaSE] 多线程(售票例子)

    需求:简单的买票程序,多个窗口卖票,多线程

    定义一个类Ticket实现Runnable接口,

    定义成员属性int类型的票数nums

    实现run()方法,run方法中

    while(true)的死循环,打印nums--

    获取Ticket对象,new出来

    获取Thread()对象,new出来,构造参数:Runable对象

    调用Thread对象的start()方法,开启线程

    此时会有线程安全问题,使用synchronized同步代码块解决安全问题

    避免死锁问题,同步中嵌套同步,而锁不同

    class Ticket implements Runnable {
        private int nums = 100;
    
        @Override
        public void run() {
    
            while (true) {
                synchronized (this) {
                    if (nums > 0) {
                        try {
                            Thread.sleep(10);
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                        System.out.println(Thread.currentThread().getName() + "==="
                                + (nums--));
                    }else{
                        break;
                    }
    
                }
            }
        }
    
    }
    
    public class TicketDemo {
    
        /**
         * @param args
         */
        public static void main(String[] args) {
            Ticket ticket = new Ticket();
            new Thread(ticket).start();
            new Thread(ticket).start();
            new Thread(ticket).start();
            new Thread(ticket).start();
        }
    
    }

  • 相关阅读:
    浏览器渲染HTML页面步骤
    JavaScript中必记英语单词及含义
    JavaScript中的线程与进程
    成绩转换 题解
    计算球的体积 题解 #define
    计算两点间的距离 题解
    ASCII码排序 题解
    python学习——协程
    python学习——进程
    python学习——锁
  • 原文地址:https://www.cnblogs.com/taoshihan/p/5570672.html
Copyright © 2011-2022 走看看