Callable介面中何時執行call方法
import
java.util.ArrayList;
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;
import
java.util.concurrent.TimeUnit;
class
TaskWithResult
implements
Callable<String>{
private
int
id;
private
static
int
count =
10
;
private
final
int
time =count--;
public
TaskWithResult(
int
id){
this
.id = id;
}
@Override
public
String call()
throws
Exception {
TimeUnit.MILLISECONDS.sleep(
100
);
return
"Result of TaskWithResult : "
+ id+
", Time= "
+time;
}
}
public
class
CallableDemo {
public
static
void
main(String[] args)
throws
InterruptedException, ExecutionException {
ExecutorService exec = Executors.newCachedThreadPool();
ArrayList<Future<String>> results =
new
ArrayList<Future<String>>();
for
(
int
i=
0
;i<
10
;i++){
results.add(exec.submit(
new
TaskWithResult(i)));
}
for
(Future<String> fs : results){
System.out.println(fs.get());
}
}
}
經測試表面,call()方法的執行應是在exec.submit的時候呼叫的。也及時線上程被執行的時候執行call方法裡面的東西。但這裡有個問題如果啟了多個執行緒,給call方法上打了斷點,測試結果並不是每個執行緒執行的時候斷點都會走call方法,應該是內部也有執行緒進行維護。我的理解就到這,希望懂的大神再幫忙解釋下。
相關推薦
Callable介面中何時執行call方法
import java.util.ArrayList; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.
top、ps命令檢視程序中的執行緒方法
方法一:PS ps -a顯示所有程序pid,“-T”選項可以開啟執行緒檢視。 eg: ps -aT 顯示所有執行緒 方法二: Top top用於實時檢視各個執行緒情況,用top命令的“-H”選項,該選項會列出所有Linux執行緒。 eg1. top -H 所有執行緒 eg2.
Java多執行緒的實現(程序與執行緒的概念、Java繼承Thread類實現多執行緒、Java實現Runnable介面實現多執行緒、Thread與Runnable的區別、實現Callable介面實現多執行緒)
1 程序與執行緒 1.1 程序與執行緒的概念 什麼是程序? 程序: 作業系統中一個程式的執行週期。(比如我們想要在電腦上登入QQ,從雙擊qq按鈕---->關閉qq這個過程就是一個程序) 多程序: 同一時刻跑多個程式。 在DOS(磁碟作業系統時
jdk1.8的介面中default修飾的方法
我用的的是jdk1.8,某次在編寫某個類實現listener介面的時候,發現ide沒有提示實現介面的方法,有點迷就去介面原始碼去看了一下,看到接口裡的方法竟然可以定義為default型別,加了一個def
前端學習筆記之js中apply()和call()方法詳解
經過網上的大量搜尋,漸漸明白了apply()和call方法的使用,為此寫一篇文章記錄一下。 定義 apply()方法: Function.apply(obj,args)
java--類繼承和實現的介面中含有相同的方法
首先,說一下,當某一個類實現了兩個介面的時候,兩個介面中存在兩個相同的方法,在實現的類中只需實現一個方法的方法體。當一個類繼承一個類,並且實現一個或者多個介面的時候,其中,父類和父介面中存在相同的方法。 如果子類中存在該方法的實現體或者說是覆蓋,則使用該類的物件去掉用該方法
Hibernate的Session介面中save/delete/update方法2個引數(entityName)的深入解析
Hibernate的Session介面中delete/update方法2個引數(entityName)的深入解析 2010-09-14 18:07 session.update(Object arg0); session.update(String arg0, Obje
【java基礎】collection介面中toArray()的使用方法
Collection介面中有兩種toArray()方法 Object[] toArray() Return an Array Containing all of the elements in this collection. <T> T[]
定義一個介面,再定義類實現該介面,編寫應用程式,呼叫介面中的 3 個方法,並將呼叫方法所得的結果輸出。
/** * 定義一個介面,介面中有 3 個抽象方法如下。(1)“long fact(int m);”方法的功能為求引數的階乘。(2)“long intPower(int m,int n);”方法的功能為求引數 m 的 n 次方。(3)“boolean findFactor
多執行緒-從Future物件中獲取執行緒處理Callable方法的結果
Runnable 介面應該由那些打算通過某一執行緒執行其例項的類來實現。類必須定義一個稱為 run 的無引數方法。 以上為Runnable介面的描述,明確可以看出,實現Runnable子類的例項是被執行緒來執行的。但是看看run方法的定義為void,因此,獲取run方法中
this指標在普通函式、物件方法、定時器、建構函式、事件函式、call()、apply()中的執行
前導: this是JavaScript中的一個關鍵字,在不同的場景中,this指向的物件也不同。在其他面嚮物件語言中(如C#),this就是指向當前物件。而在JavaScript 中this是在程式碼執行時繫結的,相對而言this指向比較混亂。在程式碼執行時th
(轉載)Android中Handler的使用方法——在子執行緒中更新介面
本文主要介紹Android的Handler的使用方法。Handler可以傳送Messsage和Runnable物件到與其相關聯的執行緒的訊息佇列。每個Handler物件與建立它的執行緒相關聯,並且每個Handler物件只能與一個執行緒相關聯。 Handler一般有兩種
從執行緒中產生返回值--Callable介面
Runnable是執行工作的獨立執行緒,但是它不返回任何值。如果你希望執行緒在完成時能夠返回一個值,那麼可以實現Callable介面而不是Runnable介面。在Java SE5中引入的Callable
實現Callable介面,什麼時候呼叫call()方法
最近,專案中經常接觸執行緒,特別是在推送MQ的時候,都是使用執行緒來執行操作。在這裡,用一個簡單的例子來整理一個很簡單的使用方法。程式碼如下: public class TestThread { public static void main(String[] ar
對javascript中call()方法的理解
創建 scrip 補充 call() 函數對象 指定 指針 com fin call ( thisObj [, arg1 [, arg2 [, [, argN] ] ] ]) call()方法:官方介紹是,調用一個對象的一個方法,以另一個對象替換當前對象。 ca
Array.prototype.slice.call()方法詳解 (調用方法中的參數截取出來)
post name push matlab methods typeof eof prot 並不是 在很多時候經常看到Array.prototype.slice.call()方法,比如Array.prototype.slice.call(arguments),下面講一下其原
Javascript中call()方法和apply()方法的作用與區別
形式 時速 有效 let 調用函數 ply lane pan arguments ECMAScript規範所有函數都包含兩個非繼承的方法,分別為call()和apply(),這兩個函數都是在特定的作用域中調用函數,能改變函數的作用域,實際上是改變函數體內“t
JS中的call()方法和apply()方法用法總結
con get global message 傳遞參數 接收 ESS tty 一般來說 原文引自:https://blog.csdn.net/ganyingxie123456/article/details/70855586 最近又遇到了JacvaScript中的cal
springboot專案啟動,自動執行某個方法中的某個類
package com.trs.idap.web.rest.controller; import com.trs.idap.service.GetCarInfoFromKEDAService; import org.springframework.beans.factory.annotation.
Oracle 11g 安裝過程中“檢查網絡配置要求 未執行”解決方法
cal 這樣的 測試的 http 項目 align 網絡 net system 正在檢查網絡配置要求... 檢查完成。此次檢查的總體結果為: 未執行 網上查了一下,很多朋友都遇到這個問題而無從下手,其實解決起來很容易的。 只需要在 Windows XP 中安裝 Micro