チケット購入手続き
2121 ワード
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();
}
}