多執行緒獲取返回值
執行緒類:
import java.util.concurrent.Callable; /** * 執行緒類,需要返回值的 ,實現Callable介面 * @author xhc * */ @SuppressWarnings("rawtypes") public class MyThread implements Callable{ @SuppressWarnings("static-access") @Override public Object call() throws Exception { Thread.currentThread().sleep(1000);//睡眠一秒 return Thread.currentThread().getName(); } }
測試類:
package com.xjiuge.test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class App { //建立執行緒池 static ExecutorService pool = Executors.newCachedThreadPool(); @SuppressWarnings("unchecked") public static void main(String[] args) { //存放future的集合 List<Future<String>> list = new ArrayList<>(); long st = System.currentTimeMillis();//開始時間 //迴圈5次,開啟5個執行緒 for (int i = 0; i < 5; i++) { //獲取執行緒類返回的值,用future接收 Future<String> future = pool.submit(new MyThread()); //將future放入list list.add(future); } try { //遍歷list讀取future中的值 for (Future<String> future : list) { while(true) { //判斷執行緒操作是否執行完畢,並且操作沒有被取消掉 if(future.isDone() && !future.isCancelled()) { //呼叫get方法獲取返回值 String result = future.get().toString(); System.out.println(result); break; } } } } catch (Exception e) { e.printStackTrace(); } long et = System.currentTimeMillis();//結束時間 System.out.println("總耗時:" + (et - st) + "ms"); } }
列印結果:
pool-1-thread-1
pool-1-thread-2
pool-1-thread-3
pool-1-thread-4
pool-1-thread-5
總耗時:1004ms
相關推薦
python多執行緒獲取返回值類重新封裝
之前在開發對比測試工具時,需要同步從資料庫拉取資料,拉取資料時間比較長,使用到了多執行緒。但是由於多執行緒沒有返回值,只能執行,因此在搜尋相關資料以後,進行了改進,重新封裝了一下。 以下為封裝後的以及測試程式碼: import threading import time class M
多執行緒獲取返回值
執行緒類: import java.util.concurrent.Callable; /** * 執行緒類,需要返回值的 ,實現Callable介面 * @author xhc * */ @SuppressWarnings("rawtypes") public c
python 獲取 多執行緒的返回值
import time import threading class MyThread(threading.Thread): def __init__(self, target=None, args=(), **kwargs): super(MyThread
讓多執行緒有返回值
Runnable,該介面的run方法並無返回值。而Callable的call方法可以根據你傳入的泛型引數返回對應型別的資料。 public class TaskCallable implements Callable<String>{ private
python多執行緒帶返回值案例
問題場景 業務需要對網頁進行PDF轉換,用到了python的pdfkit模組。因報告是成批下來,每批幾百例需要轉換,為了加快報告生成效率,python裡採用了多執行緒寫法。筆者語言是java,所以利用了**Runtime.getRuntime().exec(cm
解決python多執行緒的返回值問題
前幾天看了下python的多執行緒,但是發現建立的執行緒得不到函式的返回值,查閱資料發現需要重寫Thread類,直接上程式碼。import threading import time """重新定義帶返回值的執行緒類""
Java多執行緒帶返回值的Callable介面
Java多執行緒帶返回值的Callable介面 在面試的時候,有時候是不是會遇到面試會問你,Java中實現多執行緒的方式有幾種?你知道嗎?你知道Java中有可以返回值的執行緒嗎?在具體的用法你知道嗎?如果兩個執行緒同時來呼叫同一個計算物件,計算物件的call方法會被呼叫幾次你知道嗎?如果這些你知道,那麼凱哥(
c++11多執行緒:std::future , std::promise和執行緒的返回值
std::future物件可以和asych,std::packaged_task,std::promise一起使用。這篇文章集中討論std::future和std::promise。 我們經常會遇到需要得到執行緒返回結果的情況,現在的問題是我們如何實現。 舉個例子: 假設
利用Future非同步獲取多執行緒的返回結果
Future介面是Java標準API的一部分,在java.util.concurrent包中。Future介面是Java執行緒Future模式的實現,可以來進行非同步計算。 有了Future就可以進行三段式的程式設計了,1.啟動多執行緒任務2.處理其他事3.收集多執行
java獲取執行緒的返回值
import java.util.concurrent.*; /** * Java執行緒:有返回值的執行緒 * * @author Administrator 2009-11-5 0:41:50 */ public class Test { public static voi
PCB MS SQL跨庫執行SQL 獲取返回值
char AS span pre 必須 tno 執行 sql @param 一.SQL跨庫執行SQL 獲取返回值 DECLARE @Dblink nvarchar(100) DECLARE @sql nvarchar(MAX) DECLARE @layer
python多執行緒獲取區域網內所有電腦IP
#coding = utf-8 import os,os.path import threading import time lock = threading.RLock() def action(ip): result = "ip.txt" return1 = os.sy
多執行緒獲取區域網IP並排序
#coding = utf-8 import os,os.path import threading import re from time import ctime, sleep lock = threading.RLock() iplist = [] def action(ip):
java:多執行緒(獲取當前執行緒的物件)
* Thread.currentThread(), 主執行緒也可以獲取 public class Demo2_CurrentThread { public static void main(String[] args) { new Thread() { public
java:多執行緒(獲取名字和設定名字)
* 1.獲取名字 * 通過getName()方法獲取執行緒物件的名字 * 2.設定名字 * 通過建構函式可以傳入String型別的名字 package com.heima.threadmethod; p
如何獲得執行緒的返回值?
最近在學習多執行緒程式設計技術過程中,遇到一個問題:如何獲取執行緒的返回值? 執行緒定義之初: UINT Class::Thread(LPVOID lpParam) { return bResult; } 開啟執行緒: CWinTh
32位jdk中, long 型別的變數多執行緒中賦值操作問題
package im.zxd.test; public class LongTest { public static long num = 0; public static final long value1=-1L; public stati
多執行緒Session賦值,可能存在Index was outside the bounds of the array.
2018/11/01 碰到了Session賦值導致整個網站崩潰了,檢查日誌,發現是索引越界 System.IndexOutOfRangeException: Index was outside the bounds of the array. at System.Col
Python大資料分析——多執行緒獲取滬深股票歷史資料
要進行資料分析,得獲取資料。對於金融資料,我們有很多獲取方式,如雅虎金融,谷歌金融,QuantQuote,EODData,下面列出它們具體的地址:當然,如果要獲取國外金融資料,我們主要從上面這些網站上獲取;但如要獲取國內股票資料,下面有一個很方便的介面,且是用python寫的
使用多執行緒獲取大量資料集合中的關鍵資料
/** * 將一個list均分成n個list * @param source * @return */ public <T> List<