【 Thread】建立執行緒的2種方法

dapan發表於2021-09-09

(一)Thread類

1.結構

java.lang.Object

  |---java.lang.Thread


2.建立執行緒的兩種方法

(1)一種方法是將類宣告為Thread的子類,該子類應重寫Thread類的run方法

class PrimeThread extends Thread {         long minPrime;         PrimeThread(long minPrime) {             this.minPrime = minPrime;         }          public void run() {             // compute primes larger than minPrime              . . .         }}PrimeThread p = new PrimeThread(143);p.start();


(2)建立執行緒的另一種方法是宣告實現Runnable介面的類,然後該類實現run方法。然後可以分配該類的例項,在建立Thread時作為一個引數來傳遞並啟動

(3)這種方法給已經實現繼承的類,提供了實現多執行緒的擴充套件方法,實現介面

class PrimeRun implements Runnable {         long minPrime;         PrimeRun(long minPrime) {             this.minPrime = minPrime;         }          public void run() {             // compute primes larger than minPrime              . . .         }}PrimeRun p = new PrimeRun(143);new Thread(p).start();


程式碼1:第一種建立執行緒的方法

MyThread類

// 1.繼承Thread類public class MyThread extends Thread{		private String threadName;		public MyThread() {		super();	}	// 提供一個有參的構造法方法,把名字傳給父類的構造方法直接傳遞一個執行緒的名字	public MyThread(String threadName) {		super(threadName);		this.threadName = threadName;	}	// 2.重寫run方法	@Override	public void run() {		for(int i=0;i

Main

public class Main {	public static void main(String[] args) {		//no_parameter_construction_method();		threadName_construction_method();	}		/**	 * 1.呼叫無引數的構造方法建立執行緒物件和設定執行緒名字	 * */	public static void no_parameter_construction_method() {		// 3.建立執行緒的例項物件		MyThread my1=new MyThread();		MyThread my2=new MyThread();		// 4.可以設定執行緒的名字,不設定預設使用JVM給分配的名字(Thread-N)		my1.setName("執行緒1");		my2.setName("執行緒2");		// 5.啟動執行緒		// 呼叫run()的話,的就是單純的呼叫方法		// 呼叫執行緒應該使用start()方法		my1.start();		my2.start();		System.out.println("end");	}		public static void threadName_construction_method() {		// 3.建立執行緒的例項物件		MyThread my3=new MyThread("執行緒3");		MyThread my4=new MyThread("執行緒4");		// 4.啟動執行緒		my3.start();		my4.start();		System.out.println("end");	}}

程式碼1:第二種建立執行緒的方法

OurThread類

// 1.實現Runnable介面public class OurThread implements Runnable{	// 2.重寫run方法	@Override	public void run() {		for(int i=0;i

Main

public class Main {	public static void main(String[] args) {		// 這2個方法呼叫,不會等待上一個方法完事後,下一個方法才開始,而是不阻塞直接就開始		createThread();		createNameThread();	}		public static void createThread() {		// 4.建立實現介面類物件		// 5.建立執行緒		OurThread ot1=new OurThread();		Thread t1=new Thread(ot1);				OurThread ot2=new OurThread();		Thread t2=new Thread(ot2);		t1.start();		t2.start();		System.out.println("end");	}		public static void createNameThread() {		// 4.建立實現介面類物件		// 5.建立執行緒,可以帶名字,不帶則使用JVM預設分配的名字		OurThread ot1=new OurThread();		Thread t1=new Thread(ot1,"執行緒01");				OurThread ot2=new OurThread();		Thread t2=new Thread(ot2,"執行緒02");		t1.start();		t2.start();		System.out.println("end");	}}


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758/viewspace-2813956/,如需轉載,請註明出處,否則將追究法律責任。

相關文章