package mythread.tickets;
public class Tickets implements Runnable
{
static int tickets = 100;
Object o = new Object();
boolean isSell = false;
public void run()
{
// TODO Auto-generated method stub
if(!isSell)
{
while(true)
{
synchronized(this.getClass())
{
if(tickets>0)
{
try
{
Thread.sleep(1);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"卖出了第"+tickets+"张票");
tickets--;
}
else
{
break;
}
}
}
}
else
{
while(true)
{
if(!sell())
{
break;
}
}
}
}
public static synchronized boolean sell()
{
if(tickets>0)
{
try
{
Thread.sleep(1);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+"用sell()卖出了第"+tickets+"张票");
tickets--;
return true;
}
else
{
return false;
}
}
}
package mythread.tickets;
public class TicketsTest
{
public static void main(String[] args)
{
Tickets t = new Tickets();
new Thread(t,"一号窗口").start();
try
{
Thread.sleep(1);
} catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
t.isSell = true;
new Thread(t,"二号窗口").start();
// new Thread(t,"三号窗口").start();
// new Thread(t,"四号窗口").start();
}
}