zoukankan      html  css  js  c++  java
  • Java-jdk1.4解决多线程同步问题两种实现方式-同步函数和同步代码块关键字synchronized

    class Ticket implements Runnable {
        //1.描述票的数量
        private int tickets = 100;
        
        //2.售票的动作,这个动作需要被多线程执行,那就是线程任务代码,需要定义run方法中
        //线程任务中通常都有循环结构
        
        private Object obj = new Object();
        public void run() {
            /*
            //使用同步代码块解决多线程安全问题
            synchronized(obj) {
                while (true) {
                    if (tickets > 0) {
                        System.out.println(Thread.currentThread().getName() + "  "+ tickets--);
                    }
                }
            }
            */
            
            while(true) {
                this.sale();
            }        
        }
        //解决多线程安全问题第二种方式通过同步函数
        /*
            同步函数使用的锁是固定的this,当线程任务需要一个同步时可以使用同步函数
            同步代码块使用的锁可以是任意一个对象,当线程任务需要多个同步时,必须通过锁来区分,这时只能使用同步代码块了
            
        */
        public synchronized void sale() {
            if (tickets > 0) {
                try{Thread.sleep(10);}catch(InterruptedException e){}
                System.out.println(Thread.currentThread().getName() + "  "+ tickets--);
            }
        }
    }
    
    
    public class ThreadDemo3 {
        public static void main(String[] args) {
            //1.创建Runnable接口的子类对象
            Ticket t = new Ticket();
            //2创建4个线程对象,并将Runnable接口的子类对象作为参数传递给Thread的构造函数
            Thread t1 = new Thread(t);
            Thread t2 = new Thread(t);
            Thread t3 = new Thread(t);
            Thread t4 = new Thread(t);
            
            //3.开启4个线程
            t1.start();
            t2.start();
            t3.start();
            t4.start();
            
            
        }
    }
  • 相关阅读:
    Appium Python 六:管理应用和Activity
    Loadrunner 11 遇到的问题
    LoadRunner 测试 Mysql
    LoadRunner录制:集合点
    此博客停止更新
    Mac:文件夹树型展示 tree
    Postman-CI集成Jenkins
    Django-数据模型
    Django-简单项目创建
    Django-安装篇
  • 原文地址:https://www.cnblogs.com/wgDream/p/7308721.html
Copyright © 2011-2022 走看看