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)\Java\jdk1.8.0_71\bin\java.exe" "-javaagent:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.3\lib\idea_rt.jar=49166:D:\Program Files\JetBrains\IntelliJ IDEA 2018.3.3\bin" -Dfile.encoding=UTF-8 -classpath "D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\charsets.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\deploy.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\access-bridge-32.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\cldrdata.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\dnsns.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\jaccess.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\jfxrt.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\localedata.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\nashorn.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\sunec.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\sunjce_provider.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\sunmscapi.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\sunpkcs11.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\ext\zipfs.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\javaws.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\jce.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\jfr.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\jfxswt.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\jsse.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\management-agent.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\plugin.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\resources.jar;D:\Program Files (x86)\Java\jdk1.8.0_71\jre\lib\rt.jar;D:\users\ligenyun\IdeaProjects\Test\out\production\day1" 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张票

 

上一篇:8 个最好的 jQuery 树形 Tree 插件


下一篇:71. kickstart会吗?怎么做?