class ThreadDemo6
{
public static void main(String [] args)
{
ThreadTest t=new ThreadTest();
new Thread(t).start();//这个线程调用同步代码块
try{Thread.sleep(1);}catch(Exception e){} //为什么要等待1毫秒
t.str=new String("method");//将t.str赋值使下面能调用同步函数
new Thread(t).start();//这个线程调用同步函数
}
}
class ThreadTest implements Runnable
{
private int tickets=100;
String str = new String ("");
public void run()
{
if(str.equals("method"))//调用选择
{
while(true)
{
sale();
}
}
else
{
while(true)
{
synchronized(this) //这里的this是什么作用是指向谁的啊
{
if(tickets>0)
{
try{Thread.sleep(10);}catch(Exception e){} //程序到这为什么要等待10毫秒(在多线程问题上它的执行情况是什么样的)
System.out.println(Thread.currentThread().getName()+" is saling ticket " + tickets--);
}
}
}
}
}
public synchronized void sale()
{
if(tickets>0)
{
try{Thread.sleep(10);}catch(Exception e){} //程序到这为什么也要等待10毫秒(在多线程问题上它的执行情况是什么样的)
System.out.println(Thread.currentThread().getName()+"[sale()] is saling ticket " + tickets--);
}
}
}