日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java几种多线程_Java多线程实现的几种方式

發布時間:2023/12/15 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java几种多线程_Java多线程实现的几种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java多線程實現的幾種方式

多進程是計算機中的一個重要概念,通常一個任務稱為一個進程,比如瀏覽網頁、播放音樂都是一個進程。

在進程內部可能還需要執行多個子任務,比如在使用word文檔打字的時候,不僅要進行字符打印,同時還要進行字符統計、拼接檢查等任務。

進程和線程的關系是:一個進程可以包含一個或者多個線程,但至少會包含一個線程。

在Java中,多線程的學習是非常重要的,本文主要概括Java多線程實現的幾種方式。

Java中實現多進程的方式大概有3種:

實現Runnable接口,重寫run方法

繼承Thread類,重寫run方法(Thread類本身也實現了Runnable接口)

實現Callable接口,重寫call方法(帶有返回值)

通過Runnable接口實現多線程1

2

3

4

5

6

7

8

9

10

11

12

13public class Main{

public static void main(String[] args){

Thread t = new Thread(new MyRunnable());

t.start(); // 啟動新線程

}

}

class MyRunnable implements Runnable{

@Override

public void run(){

System.out.println("start new thread!");

}

}

實現Runnable接口的類,只定義了任務,自身不具有線程能力。需要通過Thread類的構造器來將任務驅動在一個線程中。

通過繼承Thread類實現

Thread類中已經實現了Runnable接口,所以可以直接繼承Thread類,覆寫run方法實現多線程

1

2

3

4

5

6

7

8

9

10public class MyThread extends Thread{

public void run(){

System.out.println("New Thread : "+Thread.currentThread().getName());

}

public static void main (String []args){

MyThread thread = new MyThread();

thread.start();

System.out.println("Main Thread : " + Thread.currentThread().getName());

}

}

通過繼承Callable接口實現

相較于實現Runnable接口,Callable方法可以有返回值,并且可以拋出異常

執行Callable方法,需要FutureTask實現類的支持,用于接受運算的結果,FutureTask是Future接口的實現

需要覆寫call方法,運行Callable任務可以拿到一個Future對象,Future表示異步計算的結果

通過Future對象可了解任務執行情況,可取消任務的執行,還可以獲取任務執行的結果

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37import java.util.concurrent.Callable;

import java.util.concurrent.ExecutionException;

import java.util.concurrent.FutureTask;

public class TestCallable{

public static void main(String[] args){

ThreadDemo td = new ThreadDemo();

FutureTask result = new FutureTask<>(td);

new Thread(result).start();

try {

Integer sum = result.get();

System.out.println(sum);

} catch (InterruptedException | ExecutionException e) {

e.printStackTrace();

}

}

}

class ThreadDemo implements Callable{

@Override

public Integer call() throws Exception{

int sum = 0;

for (int i = 0; i <= 100; i++) {

sum += i;

}

return sum;

}

}

總結

以上是生活随笔為你收集整理的java几种多线程_Java多线程实现的几种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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