zoukankan      html  css  js  c++  java
  • Java-多线程-安全性-同步方法技术

    package cn.bruce.Thread;
    
    //多线程售票案例
    //解决安全问题,JAVA程序提供了同步技术synchronized(任意对象){线程要操作的共享数据}
    //同步代码块
    public class MoreThreadDemo2 {
        public static void main(String[] args) {
            // 创建Runnable接口实现类对象
            Tickets t = new Tickets();
            // 创建三个Thread类对象,传递Runnable接口实现类
            Thread t0 = new Thread(t, "窗口1");
            Thread t1 = new Thread(t, "窗口2");
            Thread t2 = new Thread(t, "窗口3");
            // 开启线程
            t0.start();
            t1.start();
            t2.start();
    
        }
    }
    
    class Tickets implements Runnable {
        private int number = 100;
    
        public void run() {
            while (true)
            {
                payTicket();
            }
        }
    
        // 同步方法有锁吗?有的,同步方法中的对象锁就是this(本类对象引用)
        // 如果方法是静态呢?锁对象不是this,是本类自己.class
        public synchronized void payTicket() {// 同步方法技术
            // 对票数做判断,大于0 可以出售
            if (number > 0)
            {
                try
                {
                    Thread.sleep(10);// 使用休眠,模拟CPU切换
                    System.out.println(Thread.currentThread().getName() + "出售第" + number--);
                } catch (Exception e)
                {
                    e.printStackTrace();
                }
    
            }
        }
    }
  • 相关阅读:
    Android Button四种点击事件和长按事件
    Android 简单登陆 涉及 Button CheckBox TextView EditText简单应用
    Android EditText属性
    Android-TextView 控件常用属性以及基本用法
    对象数组空指针异常
    数字反转问题
    遇3问题
    队列解密QQ号
    线程先后执行问题
    小哼买书
  • 原文地址:https://www.cnblogs.com/BruceKing/p/13572424.html
Copyright © 2011-2022 走看看