本帖最后由 何超 于 2013-12-31 11:51 编辑
- public class Thread extends java.lang.Thread {
- static int ticket=100;
- boolean flag=true;
- public void run(){
- while(flag){
- ticket--;
- System.out.println(Thread.currentThread()+"余票为"+ticket);
- if(ticket==0)
- flag=false;
- }
- }
- public static void main(String[] args) throws InterruptedException {
- // TODO Auto-generated method stub
- Thread t1=new Thread();
- Thread t2=new Thread();
- t1.start();
- t2.start();
- t1.join();
- System.out.println("OVER");
- }
- }
复制代码
最简单的一个线程,可是我看到运行结果有一个疑问,运行结果中有这样一项
Thread[Thread-1,5,main]余票为54
Thread[Thread-0,5,main]余票为85
Thread[Thread-0,5,main]余票为52
Thread[Thread-0,5,main]余票为1
Thread[Thread-0,5,main]余票为0
OVER
Thread[Thread-1,5,main]余票为53
1:ticket是静态变量为什么中间会出现85?而不是53,静态变量是全局共享,为什么突然从54变成85又变成52
2: 53为什么是在最后才出现?最后有一个输出语句我可以理解,但是不能理解的是为什么偏偏是上面对应的53在这里出现。
突然感觉上个月自学的全吐出来了{:soso_e127:} |