java多線程Future和Callable類示例分享
一,描寫敘述
在多線程下編程的時候。大家可能會遇到一種需求,就是我想在我開啟的線程都結(jié)束時,同一時候獲取每一個線程中返回的數(shù)據(jù)然后再做統(tǒng)一處理,在這種需求下,F(xiàn)uture與Callable的組合就派上了非常大的用場。
也有人會說,我能夠使用同步來完畢這個需求啊,普通情況下確實(shí)能夠。可是在一種特殊情況下就不行了:
想象,你開啟了多個線程同步計(jì)算一些數(shù)據(jù),可是大家都知道,線程是會爭用資源的,也就是說。你開啟多個線程來同步計(jì)算數(shù)據(jù)時。事實(shí)上線程之間的計(jì)算順序是不可空的,當(dāng)然除非你非非常大周折去處理也不無可能。在這樣的情況下。Future和Callable的組合就是不二之選了。
二,樣例
這兩個類的樣例事實(shí)上非常easy,主要就看自己在實(shí)際運(yùn)用中能不能找到他們的用武之地了。上代碼:
package test;
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 FetureCallableTest {
private static ExecutorService service = Executors.newFixedThreadPool(100);
private static int count = 1;
public static void main(String[] args) throws InterruptedException, ExecutionException {
int sum = 0;
for(int i = 0; i < 100; i++) {
Future<Integer> future = service.submit(new Callable<Integer>(){
@Override
public Integer call() throws Exception {
System.out.println(Thread.currentThread().getName());
return ++count;
}
});
int f = future.get();
sum += f;
System.out.println("future is " + f);
}
System.out.println("sum is " + sum);
service.shutdownNow();
}
}
相關(guān)文章
Java實(shí)現(xiàn)解壓zip壓縮包的兩種方法(支持多層級)
壓縮文件在生活中經(jīng)常能用到,在Java中提供了壓縮和解壓縮文件的功能,本文主要介紹了Java實(shí)現(xiàn)解壓zip壓縮包的兩種方法(支持多層級),感興趣的可以了解一下2024-03-03
關(guān)于struts返回對象json格式數(shù)據(jù)的方法
以下為大家介紹,關(guān)于struts返回對象json格式數(shù)據(jù)的方法,希望對有需要的朋友有所幫助。2013-04-04
在Java中使用redisTemplate操作緩存的方法示例
這篇文章主要介紹了在Java中使用redisTemplate操作緩存的方法示例,在Redis中可以存儲String、List、Set、Hash、Zset。感興趣的可以了解一下2019-01-01
SpringCloud OpenFeign自定義結(jié)果解碼器方式
這篇文章主要介紹了SpringCloud OpenFeign自定義結(jié)果解碼器方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09
通過web控制當(dāng)前的SpringBoot程序重新啟動
本文主要給大家介紹了如何通過web控制當(dāng)前的SpringBoot程序重新啟動,文章給出了詳細(xì)的代碼示例供大家參考,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2023-11-11
IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行
這篇文章主要介紹了IDEA創(chuàng)建Java項(xiàng)目導(dǎo)出Jar包運(yùn)行,需要的朋友可以參考下2021-01-01

