卖票——线程,不明白为什么会出现这个结果。
附上代码:
class A implements Runnable{
	public int tickets = 100;
	String str = new String("haha");	
	public void run(){
			while (true){
				synchronized(str){
					if (tickets > 0){
								System.out.printf("%s线程正在卖出第%d张票\n",
									Thread.currentThread().getName(), tickets);
								--tickets;	
						}
							else{
								break;
						}
					}
			}
	}
}
public class TestTickets_2{
	public static void main(String [] agrs){
		A aa = new A();
		Thread t1 = new Thread(aa);
		t1.start();
		Thread t2 = new Thread(aa);
		t2.start();				
	}
}
上面代码写错了吗?不应该啊,我看郝斌老师的教程视频写的。但是结果:要么全是Thread-0线程(多次执行后的结果这个是结果居多),要么全是Thread-1线程(执行很多次才能见全是这个线程),要么Thread-0线程和Thread-1线程一起出现(多次执行后,这样的结果,出现的少之又少,连续执行10次都可能见不到它一次。就算出现了,Thread-1线程才出现10条左右,剩下的全是Thread-0线程的。),我看视频教程的时候,郝斌老师的结果不是这样的啊,他的结果:Thread-0线程和Thread-1线程
都是交替出现的。请问大侠们,我描述我的问题清楚嘛?
------解决方案--------------------代码没问题,我运行了一下,大多是交替的。
多线程的运行不是可控,运行结果不一致,正常
------解决方案--------------------你好 我用editplus  运行  前两次全是 线程一  在执行   第三次出现了线程0
 用dos  cmd   第一次就 有 0和 一线程
你的应该没有错误   
答案同二楼
------解决方案--------------------
把线程睡一小会了,效果就明显了。这个跟代码没问题。