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

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

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

服務器之家 - 編程語言 - Java教程 - 詳解Java利用ExecutorService實現同步執行大量線程

詳解Java利用ExecutorService實現同步執行大量線程

2020-09-02 10:12關瑋琳linSir Java教程

這篇文章主要介紹了Java利用ExecutorService實現同步執行大量線程,ExecutorService可以維護我們的大量線程在操作臨界資源時的穩定性。

自從java1.5以后,官網就推出了executor這樣一個類,這個類,可以維護我們的大量線程在操作臨界資源時的穩定性。
先上一段代碼吧:

testrunnable.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class testrunnable implements runnable {
  private string name;
 
  public testrunnable(string name) {
    this.name = name;
  }
 
  @override
  public void run() {
    while (true) {
      if (main.surplus < 0)
        return;
      main.surplus--;
      system.out.println(name + " " + main.surplus);
    }
  }
}

main入口

?
1
2
3
4
5
6
7
8
9
10
11
12
public static void main(string[] args) {
 
     testrunnable runnable = new testrunnable("runnable1");
     testrunnable runnable2 = new testrunnable("runnable2");
 
     thread t1 = new thread(runnable);
     thread t2 = new thread(runnable2);
 
     t1.start();
     t2.start();
 
  }

詳解Java利用ExecutorService實現同步執行大量線程

這樣,我們就看到了,數據肯定是亂了的,當然這個時候我們可以加上一個synchronized的關鍵字,但是這樣也會出現點小問題的

詳解Java利用ExecutorService實現同步執行大量線程

下面我打算采用一種java內置的線程管理的機制,來解決這個問題,解決這個問題的思路大概就是,我們維護了一個線程池,當有請求操作的時候統統進入線程池,并且我們只開了一個線程,可以讓請求順序執行,順序調用臨界資源,就很安全了。

?
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
import java.util.concurrent.callable;
import java.util.concurrent.executionexception;
import java.util.concurrent.executorservice;
import java.util.concurrent.executors;
import java.util.concurrent.future;
 
public class main {
  public static int surplus = 10;
 
  private executorservice executor = executors.newsinglethreadexecutor();
 
  void addtask(runnable runnable) {
    executor.execute(runnable);
  }
 
  <v> v addtask(callable<v> callable) {
    future<v> submit = executor.submit(callable);
    try {
      return submit.get();
    } catch (interruptedexception e) {
      system.out.println("interruptedexception" + e.tostring());
    } catch (executionexception e) {
      system.out.println("executionexception" + e.tostring());
    }
    return null;
  }
 
  public void testaddtask(string name) {
    addtask(new runnable() {
      @override
      public void run() {
        for (int i = 0; i < 3; i++) {
          if (main.surplus <= 0)
            return;
          main.surplus--;
          system.out.println(name + " " + main.surplus);
        }
 
      }
    });
  }
 
  public void testaddtask2(string name) {
    int count = addtask(new callable<integer>() {
      @override
      public integer call() throws exception {
        for (int i = 0; i < 3; i++) {
          if (main.surplus <= 0)
            return 0;
          main.surplus--;
          system.out.println(name + " " + main.surplus);
        }
        return main.surplus;
      }
    });
 
  }
 
  public void close() {
    executor.shutdown();
  }
 
  public static void main(string[] args) {
    main main = new main();
    main.testaddtask("task1");
    main.testaddtask2("task2");
    main.testaddtask("task3");
    main.testaddtask2("task4");
    main.close();
  }
}

在這里,我們定義了兩種方法,分別是addtask,具有泛型的addtask,這兩種方法實現原理都是一樣的,其中一個是有回調的,一個是沒有回調的,就看項目需求了吧。

詳解Java利用ExecutorService實現同步執行大量線程

然后分別調用這兩個方法咯,就可以看到結果是非常有序,且不會混亂的。

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

原文鏈接:http://www.jianshu.com/p/ccdb616723ab

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产精品高清一区二区 | 国产精品日韩在线观看 | 91羞羞网站 | 久久老妇 | 成人午夜精品一区二区三区 | 91久久在线观看 | 黄色一级小视频 | 久草电影在线 | 这里只有精品免费 | 国产日韩精品视频 | 黄色美女视频网站 | 一区二区三区在线观看视频 | 亚洲视频自拍 | 天天操天天插 | 国产三级黄色毛片 | 欧美成人精品欧美一级私黄 | 欧美啪啪一区二区 | 杨门女将寡妇一级裸片看 | 亚洲综合在线视频 | 欧美精品不卡 | 久久久日本 | 欧美午夜影院 | 日本在线一区二区三区 | 精品一二三区 | 黄色网在线看 | 看av的网址 | 一本大道综合伊人精品热热 | 日韩在线免费 | 久久国产精品一区二区 | 天天爽夜夜爽夜夜爽精品视频 | 依人九九宗合九九九 | 91粉色视频| 本道综合精品 | 国产黄色免费网站 | 国产精品免费一区二区 | 亚洲国产精品免费 | 欧美亚洲国产激情 | 一区二区三区免费在线观看 | yellow在线视频免费观看 | 伦理午夜电影免费观看 | 亚洲精品国产第一综合99久久 |