1. 程式人生 > >多執行緒——建立執行緒方法之二(實現Runnable介面)

多執行緒——建立執行緒方法之二(實現Runnable介面)

/*
需求:簡單的賣票程式。
多個視窗同時買票。


建立執行緒的第二種方式:實現Runnable介面

步驟:
1,定義類實現Runnable介面
2,覆蓋Runnable介面中的run方法。
	將執行緒要執行的程式碼存放在該run方法中。

3,通過Thread類建立執行緒物件。
4,將Runnable介面的子類物件作為實際引數傳遞給Thread類的建構函式。
	為什麼要將Runnable介面的子類物件傳遞給Thread的建構函式。
	因為,自定義的run方法所屬的物件是Runnable介面的子類物件。
	所以要讓執行緒去指定指定物件的run方法。就必須明確該run方法所屬物件。
 

5,呼叫Thread類的start方法開啟執行緒並呼叫Runnable介面子類的run方法。



實現方式和繼承方式有什麼區別呢?

實現方式好處:避免了單繼承的侷限性。
在定義執行緒時,建議使用實現方式。

兩種方式區別:
繼承Thread:執行緒程式碼存放Thread子類run方法中。
實現Runnable,執行緒程式碼存在介面的子類的run方法。




*/

class Ticket implements Runnable//extends Thread
{
	private  int tick = 100;
	public void run()
	{
		while(true)
		{
			if(tick>0)
			{
				System.out.println(Thread.currentThread().getName()+"....sale : "+ tick--);
			}
		}
	}
}


class  TicketDemo
{
	public static void main(String[] args) 
	{

		Ticket t = new Ticket();

		Thread t1 = new Thread(t);//建立了一個執行緒;
		Thread t2 = new Thread(t);//建立了一個執行緒;
		Thread t3 = new Thread(t);//建立了一個執行緒;
		Thread t4 = new Thread(t);//建立了一個執行緒;
		t1.start();
		t2.start();
		t3.start();
		t4.start();


		/*
		Ticket t1 = new Ticket();
		//Ticket t2 = new Ticket();
		//Ticket t3 = new Ticket();
		//Ticket t4 = new Ticket();

		t1.start();
		t1.start();
		t1.start();
		t1.start();
		*/

	}
}