日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程

發布時間:2025/3/12 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

【第一章】Java多線程編程

一.進程與線程

多個時間段會有多個程序依次執行,但是同一時間點只有一個進程執行

線程是在進程基礎之上劃分的更小的程序單元 ,線程是在進程基礎上創建并且使用的,所以線程依賴于進程的支持,但是來講,線程的啟動速度要比進程快許多,所以使用多線程進行并發處理的時候,執行的性能要高于進程。

二.Thread類實現多線程

如果想要在JAVA中實現多進程,就必須有一個專門的線程類進行線程執行任務的定義,而這個主體類的定義是有要求的,必須實現特定的接口或者繼承特定的父類才可以完成。

1.繼承Thread類實現多線程

java里面提供有一個java.lang.Thread的一個程序類,一個類只要繼承了此類,并且覆寫了Thread類中提供的run()方法,就表示這個類是線程的主體類,而這個方法就是線程的主方法。

范例:多線程主體類:

class Mythread extends Thread{ //線程主體類

privateString title;publicMythread(String title) {this.title =title;

}

@Overridepublic void run() { //線程主體方法

for (int x = 0; x<10;x++) {

System.out.println(this.title + "運行 x =" +x);

}

}

}

多線程要執行的功能都應該在run()方法中定義。需要說明的是,run方法不能夠被直接調用,因為這里面牽扯到一個操作系統的資源調度問題

,所以要想啟動多線程,必須使用start方法。

new Mythread("線程A").start();new Mythread("線程B").start();new Mythread("線程C").start();

在java程序執行的過程之中考慮到對于不同層次開發者的需求,所以支持有本地的操作系統函數調用,這個技術被稱為JNI(Java Native Interface Java本地接口)技術,而java中不推薦這樣使用。

而在Thread類里提供的start0()就表示需要將此方法依賴于不同的操作系統實現。

public synchronized voidstart() {if (threadStatus != 0)throw newIllegalThreadStateException();

group.add(this);boolean started = false;try{

start0();

started= true;

}finally{try{if (!started) {

group.threadStartFailed(this);

}

}catch(Throwable ignore) {

}

}

}private native void start0();

疑問:為什么必須使用start而不能使用run方法:

任何情況下只要定義了多線程,多線程的啟動永遠只有一種方案:Thread類中的start方法。

三.Runnable接口實現多線程

雖然可以通過Thread類的繼承來實現多線程的定義,但是在java程序中對于繼承永遠都是存在有單繼承局限的,所以在java又提供了第二種多線程的主體定義形式:

實現java.lang.Runnable,此接口定義如下:

@FunctionalInterfacepublic voidRunnable() {public voidrun();

}

范例:通過Runnable實現多線程(Thread?(Runnable target)):

class Mythread implements Runnable{ //線程主體類

privateString title;publicMythread(String title) {this.title =title;

}

@Overridepublic void run() { //線程主體方法

for (int x = 0; x<10;x++) {

System.out.println(this.title + "運行 x =" +x);

}

}

}public classThreadDemo {public static voidmain(String[] args) {

Thread threada= new Thread(new Mythread("線程對象A"));

Thread threadb= new Thread(new Mythread("線程對象B"));

Thread threadc= new Thread(new Mythread("線程對象C"));

threada.start();

threadb.start();

threadc.start();

}

由于此時只是實現了Runnable接口對象,此時線程主體就不再有單繼承的局限,這樣的設計才是標準的設計。

Runnable接口使用了函數式接口的定義,所以也可以直接使用Lambda表達式進行線程類實現。

范例:利用Lambda實現多線程定義:

public classThreadDemo {public static voidmain(String[] args) {for(int x = 0 ;x < 3 ; x++) {

String title= "線程對象-" +x;

Runnable run= ()->{for(int y = 0; y < 3 ; y++) {

System.out.println(title+ "運行 x =" +x);

}

};newThread(run).start();

}

}

}

在以后開發之中對于對線程的實現,優先考慮的就是Runnable接口實現,并且都是通過Thread啟動多線程

總結

以上是生活随笔為你收集整理的java多线程编程—高级主题_Java day20 高级编程【第一章】Java多线程编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。