public class WindowTest { public static void main(String[] args) { // SaleTicket s = new SaleTicket(); // Thread t1 = new Thread(s); // Thread t2 = new Thread(s); // Thread t3 = new Thread(s); // t1.setName("窗口一"); // t2.setName("窗口二"); // t3.setName("窗口三"); // t1.start(); // t2.start(); // t3.start(); Windows w1 = new Windows(); Windows w2 = new Windows(); Windows w3 = new Windows(); w1.setName("窗口一"); w2.setName("窗口二"); w3.setName("窗口三"); w1.start(); w2.start(); w3.start(); } } class SaleTicket implements Runnable { Object obj = new Object(); Dog d = new Dog(); static int ticket = 100; public void run() { while(true) { try { Thread.sleep(5); } catch (InterruptedException e) { throw new RuntimeException(e); } synchronized(this)//对象是唯一的 { if(ticket > 0) { try { Thread.sleep(10); } catch (InterruptedException e) { throw new RuntimeException(e); } System.out.println(Thread.currentThread().getName() + ":" + ticket); ticket--; } else { break; } } } } } class Windows extends Thread { static int ticket = 100; static Object obj = new Object(); public void run() { while(true) { synchronized(Windows.class) { if(ticket > 0) { try { Thread.sleep(10); } catch (InterruptedException e) { throw new RuntimeException(e); } System.out.println(Thread.currentThread().getName() + ":" + ticket); ticket--; } else { break; } } } } } class Dog { }
public class WindowTest
{
public static void main(String[] args)
{
// SaleTicket s = new SaleTicket();
// Thread t1 = new Thread(s);
// Thread t2 = new Thread(s);
// Thread t3 = new Thread(s);
// t1.setName("窗口一");
// t2.setName("窗口二");
// t3.setName("窗口三");
// t1.start();
// t2.start();
// t3.start();
Windows w1 = new Windows();
Windows w2 = new Windows();
Windows w3 = new Windows();
w1.setName("窗口一");
w2.setName("窗口二");
w3.setName("窗口三");
w1.start();
w2.start();
w3.start();
}
}class SaleTicket implements Runnable
{
Object obj = new Object();
Dog d = new Dog();
static int ticket = 100;
public void run()
{
while(true)
{
try
{
Thread.sleep(5);
}
catch (InterruptedException e)
{
throw new RuntimeException(e);
}
synchronized(this)//对象是唯一的
{
if(ticket > 0)
{
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
throw new RuntimeException(e);
}
System.out.println(Thread.currentThread().getName() + ":" + ticket);
ticket--;
}
else
{
break;
}
}
}
}
}class Windows extends Thread
{
static int ticket = 100;
static Object obj = new Object();
public void run()
{
while(true)
{
synchronized(Windows.class)
{
if(ticket > 0)
{
try
{
Thread.sleep(10);
}
catch (InterruptedException e)
{
throw new RuntimeException(e);
}
System.out.println(Thread.currentThread().getName() + ":" + ticket);
ticket--;
}
else
{
break;
}
}
}
}
}class Dog
{}
JAVA测试之多线程的使用实现多窗口售票------JAVA
于 2023-05-05 22:01:59 首次发布