System.out.println("开始测试多线程"); class MyThread extends Thread { private int ticket=10; private String name; public MyThread(String name){ this.name=name; } @Override public void run() { for (int i = 0; i < 10; i++) { if (this.ticket > 0) { System.out.println(name + "正在出售倒数第" + this.ticket-- + "张票!"); } } } } Thread thread1 = new MyThread("一号窗"); Thread thread2 = new MyThread("二号窗"); Thread thread3 = new MyThread("三号窗"); thread1.start(); thread2.start(); thread3.start(); System.out.println("结束测试多线程");
|
开始测试多线程 结束测试多线程 一号窗正在出售倒数第10张票! 三号窗正在出售倒数第10张票! 三号窗正在出售倒数第9张票! 三号窗正在出售倒数第8张票! 三号窗正在出售倒数第7张票! 三号窗正在出售倒数第6张票! 三号窗正在出售倒数第5张票! 三号窗正在出售倒数第4张票! 三号窗正在出售倒数第3张票! 三号窗正在出售倒数第2张票! 三号窗正在出售倒数第1张票! 二号窗正在出售倒数第10张票! 一号窗正在出售倒数第9张票! 一号窗正在出售倒数第8张票! 一号窗正在出售倒数第7张票! 一号窗正在出售倒数第6张票! 一号窗正在出售倒数第5张票! 一号窗正在出售倒数第4张票! 一号窗正在出售倒数第3张票! 一号窗正在出售倒数第2张票! 一号窗正在出售倒数第1张票! 二号窗正在出售倒数第9张票! 二号窗正在出售倒数第8张票! 二号窗正在出售倒数第7张票! 二号窗正在出售倒数第6张票! 二号窗正在出售倒数第5张票! 二号窗正在出售倒数第4张票! 二号窗正在出售倒数第3张票! 二号窗正在出售倒数第2张票! 二号窗正在出售倒数第1张票! |
出现票超,会出现各窗口自行处理10张。
各个线程完全独立
|
System.out.println("开始测试多线程"); class MyRunnable implements Runnable { private int ticket=10; private String name; public MyRunnable(String name){ this.name=name; } @Override public void run() { for (int i = 0; i < 10; i++) { if (this.ticket > 0) { System.out.println(name + "正在出售倒数第" + this.ticket-- + "张票!"); } } } } Thread thread1 = new Thread(new MyRunnable("一号窗")); Thread thread2 = new Thread(new MyRunnable("二号窗")); Thread thread3 = new Thread(new MyRunnable("三号窗")); thread1.start(); thread2.start(); thread3.start(); System.out.println("结束测试多线程");
|
开始测试多线程 结束测试多线程 一号窗正在出售倒数第10张票! 二号窗正在出售倒数第10张票! 二号窗正在出售倒数第9张票! 二号窗正在出售倒数第8张票! 二号窗正在出售倒数第7张票! 二号窗正在出售倒数第6张票! 一号窗正在出售倒数第9张票! 二号窗正在出售倒数第5张票! 三号窗正在出售倒数第10张票! 三号窗正在出售倒数第9张票! 三号窗正在出售倒数第8张票! 三号窗正在出售倒数第7张票! 三号窗正在出售倒数第6张票! 三号窗正在出售倒数第5张票! 三号窗正在出售倒数第4张票! 三号窗正在出售倒数第3张票! 三号窗正在出售倒数第2张票! 三号窗正在出售倒数第1张票! 二号窗正在出售倒数第4张票! 二号窗正在出售倒数第3张票! 二号窗正在出售倒数第2张票! 二号窗正在出售倒数第1张票! 一号窗正在出售倒数第8张票! 一号窗正在出售倒数第7张票! 一号窗正在出售倒数第6张票! 一号窗正在出售倒数第5张票! 一号窗正在出售倒数第4张票! 一号窗正在出售倒数第3张票! 一号窗正在出售倒数第2张票! 一号窗正在出售倒数第1张票!
|
出现票超,会出现各窗口自行处理10张。
各个线程完全独立
|
System.out.println("开始测试多线程"); class MyRunnable implements Runnable { private int ticket = 10; @Override public void run() { for (int i = 0; i < 10; i++) { if (this.ticket > 0) { System.out.println(Thread.currentThread().getName() + "正在出售倒数第" + this.ticket-- + "张票!"); } } } } MyRunnable runnable=new MyRunnable(); Thread thread1 = new Thread(runnable,"一号窗"); Thread thread2 = new Thread(runnable,"二号窗"); Thread thread3 = new Thread(runnable,"三号窗"); thread1.start(); thread2.start(); thread3.start(); System.out.println("结束测试多线程");
|
开始测试多线程 结束测试多线程 一号窗正在出售倒数第10张票! 一号窗正在出售倒数第7张票! 一号窗正在出售倒数第6张票! 一号窗正在出售倒数第5张票! 一号窗正在出售倒数第4张票! 一号窗正在出售倒数第3张票! 一号窗正在出售倒数第2张票! 一号窗正在出售倒数第1张票! 三号窗正在出售倒数第8张票! 二号窗正在出售倒数第9张票!
|
票数正常,各窗口以剩下的票数出售。
线程共同使用类,但运行多次会发现
有些窗口出售同样的票,意味并发时
会出现同票出售。
|