1. 程式人生 > >Callable介面中何時執行call方法

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

前端學習筆記之jsapply()和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

(轉載)AndroidHandler的使用方法——在子執行更新介面

本文主要介紹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

對javascriptcall()方法的理解

創建 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),下面講一下其原

Javascriptcall()方法和apply()方法的作用與區別

形式 時速 有效 let 調用函數 ply lane pan arguments ECMAScript規範所有函數都包含兩個非繼承的方法,分別為call()和apply(),這兩個函數都是在特定的作用域中調用函數,能改變函數的作用域,實際上是改變函數體內“t

JScall()方法和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