JAVA高併發之執行緒的實現方式,含Lamabda表示式
阿新 • • 發佈:2020-08-21
Java中執行緒實現的方式
在 Java 中實現多執行緒有4種手段:
1.繼承 Thread 類
2.實現 Runnable 介面
3.匿名內部類
4.Lambda表示式實現
實現 Runnable 介面
package ljz; class MyThread implements Runnable{ // 實現Runnable介面,作為執行緒的實現類 private String name ; // 表示執行緒的名稱 public MyThread(String name){ this.name = name ; // 通過構造方法配置name屬性} public void run(){ // 覆寫run()方法,作為執行緒 的操作主體 for(int i=0;i<10;i++){ System.out.println(name + "執行,i = " + i) ; } } }; public class RunnableDemo01{ public static void main(String args[]){ MyThread mt1 = new MyThread("執行緒A ") ; // 例項化物件 MyThread mt2 = newMyThread("執行緒B ") ; // 例項化物件 Thread t1 = new Thread(mt1) ; // 例項化Thread類物件 Thread t2 = new Thread(mt2) ; // 例項化Thread類物件 t1.start() ; // 啟動多執行緒 t2.start() ; // 啟動多執行緒 } };
繼承 Thread 類
class MyThread extends Thread{ // 繼承Thread類,作為執行緒的實現類 private String name ; //表示執行緒的名稱 public MyThread(String name){ this.name = name ; // 通過構造方法配置name屬性 } public void run(){ // 覆寫run()方法,作為執行緒 的操作主體 for(int i=0;i<10;i++){ System.out.println(name + "執行,i = " + i) ; } } }; public class ThreadDemo02{ public static void main(String args[]){ MyThread mt1 = new MyThread("執行緒A ") ; // 例項化物件 MyThread mt2 = new MyThread("執行緒B ") ; // 例項化物件 mt1.start() ; // 呼叫執行緒主體 mt2.start() ; // 呼叫執行緒主體 } };
匿名內部類
介面本身是不可以new的,但是通過匿名內部類可以new然後實現介面方法。本質是要實現run方法
public static void main(String[] args) { //使用匿名內部類的方式,實現多執行緒 new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName() + "新執行緒建立了!"); } }).start();
}
使用Lambda表示式實現多執行緒
public static void main(String[] args) {//使用Lambda表示式,實現多執行緒 new Thread(() -> { System.out.println(Thread.currentThread().getName() + "新執行緒建立了!"); }).start(); }
Lambda表示式的標準格式
(引數列表,用逗號隔開)-> {一些重寫方法的程式碼};
Lambda的作用和目的:
簡化匿名內部類的書寫。
Lambda表示式繼續省略(凡是根據上下文可以推匯出來的內容,都可以省略):
- (引數列表):括號中的引數列表的資料型別,可以省略不寫;
- (引數列表):括號中的引數如果只有一個,那麼資料型別和小括號( )都可以省略;
- {一些程式碼}:如果大括號{ }中的程式碼只有一行,就可以省略大括號{ },return和分號。注意:要省略必須三個一起省略。