国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

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

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

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

Java多線程三種主要實現方式解析

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

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

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

一、簡單實現

?
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.實現Runnable接口
  static class MyRun implements Runnable{
 
    @Override
    public void run() {
      System.out.println("MyRunable-->");
    }
  }
  //4.實現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.實現Runnable接口
    new Thread(new MyRun()).start();
    new Thread(new Runnable() {
      @Override
      public void run() {
        System.out.println("simple->Runnable");
      }
    }).start();
    //4.實現Callable接口,并用包裝器FutureTask來同時實現Runable、Callable兩個接口,可帶返回結果
    MyCall mycall = new MyCall();
    FutureTask futureTask = new FutureTask(mycall);
    new Thread(futureTask).start();
    System.out.println(futureTask.get());
  }
}

二、使用ExecutorService、Callable和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
37
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
 
/**
 * 使用ExecutorsService、Callable、Future來實現多個帶返回值的線程
 */
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;
    //創建一個線程池
    ExecutorService pool = Executors.newFixedThreadPool(num);
    List<Future> futureList = new ArrayList<Future>();
    for (int i = 0; i < num; i++){
      MyCallable mc = new MyCallable(i);
      //執行任務,并返回值
      Future future = pool.submit(mc);
      futureList.add(future);
    }
    pool.shutdown();
    for (Future f: futureList){
      System.out.println(f.get());
    }
  }
}

結果:

Java多線程三種主要實現方式解析

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: aaa级黄色| 日韩中文一区二区 | 97久久精品人人澡人人爽 | 91国内精品久久 | 天天干夜夜拍 | 久久久亚洲精品中文字幕 | 九热精品视频 | 久久99精品久久久久久园产越南 | 欧美一级二级三级 | 欧美一区 | 国产小视频在线 | 亚洲欧美在线播放 | 精品国产精品三级精品av网址 | 97国产精品| 91精品国产综合久久久蜜臀粉嫩 | 日本中文字幕在线播放 | 日韩一区二区三区电影在线观看 | 91国内外精品自在线播放 | 欧美黑人一级爽快片淫片高清 | 成人av高清 | 国产一区二区三区四 | 亚洲经典一区 | 91精品国产综合久久福利软件 | 国产一区二区免费 | 亚洲久久一区二区 | 日韩3级在线观看 | 在线观看中文字幕 | 欧美午夜精品久久久久久蜜 | 91精品国产综合久久久久久 | 在线中文字幕av | 国产精品极品美女在线观看免费 | 黄色片在线看 | 亚洲 欧美 自拍偷拍 | 久久影院免费观看 | 成人免费视频在线观看 | av网址aaa| 亚洲一区二区三区高清 | 日韩一区二区在线播放 | 国产成人一区二区 | 在线亚洲免费 | 亚洲成年人影院 |