經典進程問題:5個窗口賣100張票,賣完爲止。用Runnable和Thread2種方法實現

Thread實現方式

  1. TicketThread類代碼如下:
import java.util.Random;

public class TicketThread  extends Thread{
	private static   int i=1;
	 
	Thread th =Thread.currentThread();

	String name;
	
	public TicketThread(String name) {
		super();
		this.name = name;
	}

	public  void run() {
 while(i<=96) {
           try {
			th.sleep(new Random().nextInt(1000));
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}     
	
           synchronized(this) {
        	   System.out.println(this.name+",出售第"+i+"張票");
        		i++;
           }
	
	
 }       
		
	


	}
	
	

}
  1. TestThread類代碼如下(TicketThread)的實現類
public class TestThread {

	public static void main(String[] args) {
		TicketThread th1 = new TicketThread("窗口1");
		TicketThread th2 = new TicketThread("窗口2");
		TicketThread th3 = new TicketThread("窗口3");
		TicketThread th4 = new TicketThread("窗口4");
		TicketThread th5 = new TicketThread("窗口5");
		th1.start();
		th2.start();
		th3.start();
		th4.start();
		th5.start();
	}

}

Runnable實現方式

  1. TicketRunnable類代碼如下:
public class TicketRunnable implements Runnable {
	Thread th = Thread.currentThread();
	int i = 1;

	public void run() {

		while (i <= 96) {
			try {
				th.sleep(50);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			synchronized (this) {
				System.out.println(Thread.currentThread().getName() + ",出售第" + i + "張票");

				i++;
			}

		}

	}

}
  1. TestRunnable類代碼如下(TicketRunnable的實現類)
public class TestRunnable {
	public static void main(String[] args) {
		TicketRunnable  tr =new TicketRunnable();
		Thread th1 = new Thread(tr,"窗口1");
		Thread th2 = new Thread(tr,"窗口2");
		Thread th3 = new Thread(tr,"窗口3");
		Thread th4 = new Thread(tr,"窗口4");
		Thread th5 = new Thread(tr,"窗口5");
		th1.start();
		th2.start();
		th3.start();
		th4.start();
		th5.start();
	}

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章