- 这里实现多线程卖票不是重点。重点是分析一下线程休眠后程序运行顺序。
- Thread.sleep()方法讲解请参考“http://blog.csdn.net/singwtwww/article/details/8492201”简单来说就是sleep()多少毫米内不参与cpu在竞争。注意windows平台采用的是抢占式算法。
3.从结果中分析,线程启动后开始执行run方法。由于此处写的是while(flag),所以程序后一直执行,直到flag=false,注意打印aaaaaaaa只出现了一次。每次重复执行都是执行的while里面内容。可以从时间来判断顺序。
package testThread;
import java.text.SimpleDateFormat;
class money implements Runnable {
private static int num=100;
boolean flag=true;
public void run() {
System.out.println("aaaaaaaaaaaaaaaa");
while (flag) {
System.out.println("bbbbbbbbbbbbbbb");
synchronized (this) {
if (num>0) {
try {
SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String TimeString = time.format(new java.util.Date());
System.out.println(TimeString);
Thread.sleep(5000);
num--;
} catch (InterruptedException e) {
e.printStackTrace();
}
SimpleDateFormat time=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String TimeString = time.format(new java.util.Date());
System.out.println(TimeString);
System.out.println(Thread.currentThread().getName()+"郑州到南京还有"+num);
}else {
flag=false;
System.out.println("没了");
}
}
}
}
}
public class thread2 {
public static void main(String[] args) {
money mo=new money();
Thread thread1=new Thread(mo);
Thread thread2=new Thread(mo);
Thread thread3=new Thread(mo);
Thread thread4=new Thread(mo);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
aaaaaaaaaaaaaaaa
bbbbbbbbbbbbbbb
2016-09-26 11:37:21
2016-09-26 11:37:26
Thread-0郑州到南京还有99
bbbbbbbbbbbbbbb
2016-09-26 11:37:26
2016-09-26 11:37:31
Thread-2郑州到南京还有98
2016-09-26 11:37:31
bbbbbbbbbbbbbbb
2016-09-26 11:37:36
Thread-3郑州到南京还有97
bbbbbbbbbbbbbbb
2016-09-26 11:37:36
2016-09-26 11:37:41
Thread-1郑州到南京还有96
bbbbbbbbbbbbbbb
2016-09-26 11:37:41
2016-09-26 11:37:46
Thread-3郑州到南京还有95
bbbbbbbbbbbbbbb
2016-09-26 11:37:46
2016-09-26 11:37:51
Thread-2郑州到南京还有94
bbbbbbbbbbbbbbb
2016-09-26 11:37:51
2016-09-26 11:37:56
Thread-0郑州到南京还有93
bbbbbbbbbbbbbbb
2016-09-26 11:37:56
2016-09-26 11:38:01
Thread-2郑州到南京还有92
bbbbbbbbbbbbbbb
2016-09-26 11:38:01
2016-09-26 11:38:06
Thread-3郑州到南京还有91
bbbbbbbbbbbbbbb
2016-09-26 11:38:06
2016-09-26 11:38:11
Thread-1郑州到南京还有90
bbbbbbbbbbbbbbb
2016-09-26 11:38:11
2016-09-26 11:38:16
Thread-3郑州到南京还有89
2016-09-26 11:38:16
bbbbbbbbbbbbbbb
2016-09-26 11:38:21
Thread-2郑州到南京还有88
bbbbbbbbbbbbbbb
2016-09-26 11:38:21