zoukankan      html  css  js  c++  java
  • java 线程状态(通信/等待/唤醒)

    package com.jack.test2;
    
    
    public class main {
        static Object obj = new Object();
        static int total = 100;
        static int tikets = total;
        static int pre = total / 2; //前面pre张票,必须thead2才能卖
    
        public static void main(String[] args) {
    
            Thread r1 = new Thread() {
                @Override
                public void run() {
                    while (true) {
                        synchronized (obj) {
    
                            if (tikets >= total - pre) {
                                try {
                                    System.out.println(Thread.currentThread().getName() + "在等待");
                                    obj.wait();
                                } catch (InterruptedException e) {
                                    e.printStackTrace();
                                }
                            }
                            if (tikets > 0) {
                                System.out.println(Thread.currentThread().getName() + "卖票中:第" + (total + 1 - tikets) + "张票");
                                tikets--;
                            }
                        }
                    }
                }
            };
            Thread r2 = new Thread() {
                @Override
                public void run() {
                    while (true) {
                        synchronized (obj) {
                            if (tikets > 0) {
                                System.out.println(Thread.currentThread().getName() + "卖票中:第" + (total + 1 - tikets) + "张票");
                                tikets--;
                            }
                            if (tikets < total - pre) {
                                obj.notify();
                            }
                        }
                    }
                }
            };
    
            r1.start();
            r2.start();
        }
    
    
    }
    "D:Program Files (x86)Javajdk1.8.0_71injava.exe" "-javaagent:D:Program FilesJetBrainsIntelliJ IDEA 2018.3.3libidea_rt.jar=49166:D:Program FilesJetBrainsIntelliJ IDEA 2018.3.3in" -Dfile.encoding=UTF-8 -classpath "D:Program Files (x86)Javajdk1.8.0_71jrelibcharsets.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibdeploy.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextaccess-bridge-32.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextcldrdata.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextdnsns.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextjaccess.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextjfxrt.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextlocaledata.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibext
    ashorn.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunec.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunjce_provider.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunmscapi.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextsunpkcs11.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibextzipfs.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjavaws.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjce.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjfr.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjfxswt.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibjsse.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibmanagement-agent.jar;D:Program Files (x86)Javajdk1.8.0_71jrelibplugin.jar;D:Program Files (x86)Javajdk1.8.0_71jrelib
    esources.jar;D:Program Files (x86)Javajdk1.8.0_71jrelib
    t.jar;D:usersligenyunIdeaProjectsTestoutproductionday1" com.jack.test2.main
    Thread-0在等待
    Thread-1卖票中:第1张票
    Thread-1卖票中:第2张票
    Thread-1卖票中:第3张票
    Thread-1卖票中:第4张票
    Thread-1卖票中:第5张票
    Thread-1卖票中:第6张票
    Thread-1卖票中:第7张票
    Thread-1卖票中:第8张票
    Thread-1卖票中:第9张票
    Thread-1卖票中:第10张票
    Thread-1卖票中:第11张票
    Thread-1卖票中:第12张票
    Thread-1卖票中:第13张票
    Thread-1卖票中:第14张票
    Thread-1卖票中:第15张票
    Thread-1卖票中:第16张票
    Thread-1卖票中:第17张票
    Thread-1卖票中:第18张票
    Thread-1卖票中:第19张票
    Thread-1卖票中:第20张票
    Thread-1卖票中:第21张票
    Thread-1卖票中:第22张票
    Thread-1卖票中:第23张票
    Thread-1卖票中:第24张票
    Thread-1卖票中:第25张票
    Thread-1卖票中:第26张票
    Thread-1卖票中:第27张票
    Thread-1卖票中:第28张票
    Thread-1卖票中:第29张票
    Thread-1卖票中:第30张票
    Thread-1卖票中:第31张票
    Thread-1卖票中:第32张票
    Thread-1卖票中:第33张票
    Thread-1卖票中:第34张票
    Thread-1卖票中:第35张票
    Thread-1卖票中:第36张票
    Thread-1卖票中:第37张票
    Thread-1卖票中:第38张票
    Thread-1卖票中:第39张票
    Thread-1卖票中:第40张票
    Thread-1卖票中:第41张票
    Thread-1卖票中:第42张票
    Thread-1卖票中:第43张票
    Thread-1卖票中:第44张票
    Thread-1卖票中:第45张票
    Thread-1卖票中:第46张票
    Thread-1卖票中:第47张票
    Thread-1卖票中:第48张票
    Thread-1卖票中:第49张票
    Thread-1卖票中:第50张票
    Thread-1卖票中:第51张票
    Thread-1卖票中:第52张票
    Thread-1卖票中:第53张票
    Thread-1卖票中:第54张票
    Thread-1卖票中:第55张票
    Thread-1卖票中:第56张票
    Thread-1卖票中:第57张票
    Thread-1卖票中:第58张票
    Thread-1卖票中:第59张票
    Thread-1卖票中:第60张票
    Thread-0卖票中:第61张票
    Thread-0卖票中:第62张票
    Thread-0卖票中:第63张票
    Thread-0卖票中:第64张票
    Thread-0卖票中:第65张票
    Thread-0卖票中:第66张票
    Thread-0卖票中:第67张票
    Thread-0卖票中:第68张票
    Thread-0卖票中:第69张票
    Thread-0卖票中:第70张票
    Thread-0卖票中:第71张票
    Thread-0卖票中:第72张票
    Thread-0卖票中:第73张票
    Thread-0卖票中:第74张票
    Thread-0卖票中:第75张票
    Thread-0卖票中:第76张票
    Thread-0卖票中:第77张票
    Thread-0卖票中:第78张票
    Thread-0卖票中:第79张票
    Thread-0卖票中:第80张票
    Thread-0卖票中:第81张票
    Thread-0卖票中:第82张票
    Thread-0卖票中:第83张票
    Thread-0卖票中:第84张票
    Thread-0卖票中:第85张票
    Thread-0卖票中:第86张票
    Thread-0卖票中:第87张票
    Thread-0卖票中:第88张票
    Thread-0卖票中:第89张票
    Thread-0卖票中:第90张票
    Thread-0卖票中:第91张票
    Thread-0卖票中:第92张票
    Thread-0卖票中:第93张票
    Thread-0卖票中:第94张票
    Thread-0卖票中:第95张票
    Thread-0卖票中:第96张票
    Thread-0卖票中:第97张票
    Thread-0卖票中:第98张票
    Thread-0卖票中:第99张票
    Thread-0卖票中:第100张票
  • 相关阅读:
    django rest framework renderer
    django集成celery
    Celery
    ajax csrftoken
    验证码刷新、倒计时
    C++ const关键字以及static关键字
    git 查看当前仓库地址以及设置新的仓库地址
    C++ explicit关键字
    SSD训练网络参数计算
    C++ opencv调用resize修改插值方式遇到的坑
  • 原文地址:https://www.cnblogs.com/ligenyun/p/12631062.html
Copyright © 2011-2022 走看看