一,概括??
二,線程構建方式一(繼承Thread類)
三,案例
父類:
package Duoxiancheng;public abstract class Name {public static void main(String[] args) {//3,創建一個Thread線程類對象Thread t1 =new ZHiLeiA();//4,啟動線程t1.start();for (int i = 0; i < 4; i++) {System.out.println("軟件");}}}
?子類:
package Duoxiancheng;
/*
1.讓子類繼承Thread線程類
* */public class ZHiLeiA extends Thread {//2,必須重寫父類的run方法;@Overridepublic void run(){for (int i = 0; i <4 ; i++) {System.out.println("星火666");}}
}
注意事項:
?四,線程構建方式二(實現Runnable接口)
五,案例
?父類:
package Duoxiancheng;public class Name2 {public static void main(String[] args) {//3,創建任務對象Runnable r =new ZhiLieB();//4,把任務對象處理new Thread(r).start();for (int i = 0; i < 5; i++) {System.out.println("主線程運行"+i);}}
}
子類:
package Duoxiancheng;
//1,實現Runnable接口
public class ZhiLieB implements Runnable {//2,重寫run方法@Overridepublic void run() {//執行任務for (int i = 0; i < 5; i++) {System.out.println("次線程運行"+i);}}
}
注意事項:
六,線程創建方式二的匿名內部類(簡化寫法)?
七,案例:
?
package Duoxiancheng;public class Name2_2 {public static void main(String[] args) {//1,直接創建Runnable接口的匿名內部類
// Runnable r =new ZhiLieB(){
// @Override
// public void run() {
// //執行任務
// for (int i = 0; i < 5; i++) {
// System.out.println("次線程運行"+i);
// }
// }
// };
// new Thread(r).start();
// for (int i = 0; i <5 ; i++) {
// System.out.println("主線程運行"+i);
// }
// }//2,簡化一
// new Thread(new Runnable() {
// @Override
// public void run() {
// for (int i = 0; i < 5; i++) {
// System.out.println("次線程運行"+i);
// }
// }
// }).start();
// for (int i = 0; i <5 ; i++) {
// System.out.println("主線程運行"+i);
// }//3,簡化二new Thread(()->{for (int i = 0; i < 5; i++) {System.out.println("次線程運行"+i);}}).start();for (int i = 0; i <5 ; i++) {System.out.println("主線程運行"+i);}}
}
八,線程構建方式三(實現Gallable接口)
九,案例
?父類:
package Duoxiancheng;import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;public class Name3 {public static void main(String[] args) throws ExecutionException, InterruptedException {//3,創建一個callable的對象Callable<String> call =new ZhiLieC(100);//4,封裝對象FutureTask <String>f1=new FutureTask<>(call);//5,交給線程對象new Thread(f1).start();//6,獲取線程執行后的結果String rs =f1.get();System.out.println(rs);}
}
子類:
package Duoxiancheng;import java.util.concurrent.Callable;
//1,實現接口
public class ZhiLieC implements Callable<String> {private int n;public ZhiLieC(int n){this.n=n;}//2,重寫call方法@Overridepublic String call() throws Exception {//描述線程任務,返回結果//例:求1-n的和返回int sum =0;for (int i = 1; i <=n ; i++) {sum += i;}return "線程所求之和為"+sum;}
}
注意事項: