JAVA线程的使用
Eg:三个售票站同时卖20张票
import java.util.*;
class Station implements Runnable{
int ticket=0;
String s1,s2,s3;
public Station(String s1,String s2,String s3)
{
this.s1=s1;
this.s2=s2;
this.s3=s3;
}
@Override
public void run() {
while(true)
{
SellTicket(20);
}
}
public synchronized void SellTicket(int number)
{
if(Thread.currentThread().getName().equals(s1))
{
ticket++;
if(ticket>number)
{ return; }
System.out.println("一号窗口卖出第"+ticket+"张票"+"还剩"+(number-ticket)+"张票");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
else if(Thread.currentThread().getName().equals(s2))
{
ticket++;
if((ticket>number))
{ return; }
System.out.println("二号窗口卖出第"+ticket+"张票"+"还剩"+(number-ticket)+"张票");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
else if(Thread.currentThread().getName().equals(s3))
{
ticket++;
if((ticket>number))
{ return; }
System.out.println("三号窗口卖出第"+ticket+"张票"+"还剩"+(number-ticket)+"张票");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main{
public static void main(String[] args) {
String s1="一号窗口",s2="二号窗口",s3="三号窗口";
Station s=new Station(s1,s2,s3);
Thread m=new Thread(s);
Thread n=new Thread(s);
Thread q=new Thread(s);
m.setName(s1);
n.setName(s2);
q.setName(s3);
m.start();
n.start();
q.start();
}
}