java創建線程的幾種方式

1.繼承Thread類,重寫run方法

public class Thread3 {
	public static void main(String[] args) {
		new Thread("線程1") {
			public void run() {
				for(int i=0;i<5;i++) {
					System.out.println(Thread.currentThread().getName()+":"+i);
				}
			};
		}.start();
		System.out.println("主線程");
	}
}

結果:
在這裏插入圖片描述

2.實現Runnable接口的run方法

public class Thread3 {
	public static void main(String[] args) {
		new Thread(new Runnable() {
			
			public void run() {
				for(int i=0;i<5;i++) {
					System.out.println(Thread.currentThread().getName()+":"+i);
				}
			};
		},"線程2").start();
		System.out.println("主線程");
	}
}

結果:
在這裏插入圖片描述

3.實現Callable的call方法,配合FutureTask可以獲得線程執行返回的結果

FutureTask的get()方法阻塞等待線程返回結果

public class Thread1 implements Callable<Integer>{

	public static void main(String[] args) {
		Thread1 thread1 = new Thread1();
		FutureTask<Integer> ft = new FutureTask<Integer>(thread1);
		
		new Thread(ft,"有返回值的線程").start();
		
		try {
			System.out.println("返回值:"+ft.get());
		} catch (InterruptedException | ExecutionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	@Override
	public Integer call() throws Exception {
		int i = 0;
		for(;i<4;i++) {
			System.out.println(Thread.currentThread().getName()+":"+i);
		}
		return i;
	}
	
}

結果:
在這裏插入圖片描述

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