激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java多線程三種主要實現(xiàn)方式解析

Java多線程三種主要實現(xiàn)方式解析

2020-07-21 18:03章冒冒2020 Java教程

這篇文章主要介紹了Java多線程三種主要實現(xiàn)方式解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

多線程三種主要實現(xiàn)方式:繼承Thread類,實現(xiàn)Runnable接口、Callable和Futrue。

一、簡單實現(xiàn)

?
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
 
public class T02_HowToCreateThread {
  //1.繼承Thread類
  static class MyThread extends Thread{
    @Override
    public void run() {
      System.out.println("MyThread-->");
    }
  }
  //3.實現(xiàn)Runnable接口
  static class MyRun implements Runnable{
 
    @Override
    public void run() {
      System.out.println("MyRunable-->");
    }
  }
  //4.實現(xiàn)Callable接口
  static class MyCall implements Callable{
 
    @Override
    public Object call() throws Exception {
      System.out.println("myCallable-->");
      return 1;
    }
  }
  public static void main(String[] args) throws ExecutionException, InterruptedException {
    //1.繼承Thread類
    new MyThread().start();
    //2.lambda與繼承Thread類類//1.繼承Thread類似,最簡單
    new Thread(()->{
      System.out.println("lambda-->");
    }).start();
    //3.實現(xiàn)Runnable接口
    new Thread(new MyRun()).start();
    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("simple->Runnable");
      }
    }).start();
    //4.實現(xiàn)Callable接口,并用包裝器FutureTask來同時實現(xiàn)Runable、Callable兩個接口,可帶返回結果
    MyCall mycall = new MyCall();
    FutureTask futureTask = new FutureTask(mycall);
    new Thread(futureTask).start();
    System.out.println(futureTask.get());
  }
}

二、使用ExecutorService、Callable和Future一起實現(xiàn)帶返回值

?
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
37
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
 
/**
 * 使用ExecutorsService、Callable、Future來實現(xiàn)多個帶返回值的線程
 */
public class T02_HowToCreateThread02 {
  static class MyCallable implements Callable{
    private int taskNum;
 
    public MyCallable(int taskNum){
      this.taskNum = taskNum;
    }
    @Override
    public Object call() throws Exception {
      System.out.println("任務"+taskNum);
      return "MyCallable.call()-->task"+taskNum;
    }
  }
  public static void main(String[] args) throws ExecutionException, InterruptedException {
    int num = 5;
    //創(chuàng)建一個線程池
    ExecutorService pool = Executors.newFixedThreadPool(num);
    List<Future> futureList = new ArrayList<Future>();
    for (int i = 0; i < num; i++){
      MyCallable mc = new MyCallable(i);
      //執(zhí)行任務,并返回值
      Future future = pool.submit(mc);
      futureList.add(future);
    }
    pool.shutdown();
    for (Future f: futureList){
      System.out.println(f.get());
    }
  }
}

結果:

Java多線程三種主要實現(xiàn)方式解析

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/helq/p/13264050.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产黄色一区二区 | 欧美hdfree性xxxx| 精品一区二区三区在线视频 | 成人18在线| 午夜影院a| 亚洲免费视频大全 | 欧美一级全黄 | 热99精品视频 | 激情久久一区二区 | 伊人99在线 | 久久千人斩 | 免费看黄色三级毛片 | 日本精品婷婷久久爽一下 | 国产精品资源手机在线播放 | 国产精品99久久99久久久二 | 92精品国产自产在线 | 欧美一级黄色录像片 | 日韩在线欧美在线 | 调教小男生抽打尿孔嗯啊视频 | 天天看天天摸天天操 | 天天操天天碰 | 国产超碰人人做人人爱 | 日本成人一二三区 | 操碰在线视频 | 99久久自偷自偷国产精品不卡 | 欧美一a一片一级一片 | 欧美一级α| 5a级毛片 | 色3344| 欧美老外a级毛片 | 欧产日产国产精品乱噜噜 | 国产高潮国产高潮久久久91 | 成年免费观看视频 | 史上最强炼体老祖动漫在线观看 | 神马久久精品综合 | 毛片免费网 | 中国美女一级黄色大片 | 黄色av免费电影 | 国产精品免费小视频 | 国产精品久久久久久久久久免 | 中文字幕 亚洲一区 |