摘要:默認(rèn)值是小于的,所以如果大于就證明取到了數(shù)據(jù)如果設(shè)置失敗,證明其他線程已經(jīng)找到了按照線程數(shù)進(jìn)行分組大概思想邏輯對該段下面的解釋假設(shè)數(shù)組里有個數(shù)字,那么第一輪循環(huán)提交一個線程執(zhí)行到的數(shù)據(jù)第一輪循環(huán)完后,開始執(zhí)行第二輪第二輪循環(huán),最終等于
public class ConcurrentSearch {
static int[] arr; static ExecutorService pool = Executors.newCachedThreadPool(); static final int Thread_Num = 2; static AtomicInteger result = new AtomicInteger(-1); public static int search(int searchValue,int begin,int end){ int i=0; for(i=begin;i0){//默認(rèn)值是小于0的,所以如果大于0就證明取到了數(shù)據(jù) return result.get(); } if(arr[i]==searchValue){//如果設(shè)置失敗,證明其他線程已經(jīng)找到了 if(!result.compareAndSet(-1,i)){ return result.get(); } return i; } } return -1; } public static class SearchTask implements Callable { int begin,end,searchValue; public SearchTask(int begin, int end, int searchValue) { this.begin = begin; this.end = end; this.searchValue = searchValue; } @Override public Integer call() throws Exception { int re = search(searchValue,begin,end); return re; } } public static int pSearch(int searchValue) throws ExecutionException, InterruptedException { int subArrSize = arr.length/Thread_Num+1;//按照線程數(shù)進(jìn)行分組 List > re = new ArrayList<>(); /**大概思想邏輯 * 對該段下面for的解釋 * 假設(shè)arr數(shù)組里有20個數(shù)字,那么subArrSize=11 * 第一輪循環(huán)end=11; * 提交一個線程執(zhí)行index0到11的數(shù)據(jù) * 第一輪循環(huán)完后,i=11 i<20 * 開始執(zhí)行第二輪 * 第二輪循環(huán)end=22,最終等于19 * 所以第二輪執(zhí)行 index 11 19 * 完了之后i=22所以不存在第三輪循環(huán) */ for(int i = 0;i =arr.length){ end =arr.length; } re.add(pool.submit(new SearchTask(searchValue,i,end))); } for(Future fu:re){ if(fu.get()>=0){ return fu.get(); } } return -1; } public static void main(String[] args) { }
}
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74788.html
摘要:簡單算法之遞歸我向算法工程師請教如何學(xué)好算法,他跟我提議說先看懂漢諾塔,這是一個小朋友都會玩的游戲,里面用到了遞歸的思想。遞歸實(shí)現(xiàn)倒計時函數(shù)下面這個倒計時函數(shù)使用了遞歸,而且使用了尾遞歸優(yōu)化。 前端需要算法嗎? 別想太多,肯定要!!! 什么是算法 你以為的算法是各種排序,選擇排序、快速排序、歸并排序,廣深搜索、動態(tài)規(guī)劃...... 然而,算法實(shí)際上指的是解決某個實(shí)際問題的方法。 解決同...
閱讀 841·2021-11-15 17:58
閱讀 3641·2021-11-12 10:36
閱讀 3779·2021-09-22 16:06
閱讀 956·2021-09-10 10:50
閱讀 1325·2019-08-30 11:19
閱讀 3309·2019-08-29 16:26
閱讀 928·2019-08-29 10:55
閱讀 3341·2019-08-26 13:48