자바 멀 티 태 스 크 병행 처리 -- Callable
현재 로 서 는 내 가 주로 아 는 것 은 다음 과 같은 두 가지 이다.
1. callable 스 레 드 를 실현 하고 ExecutorService executor = Executors. new Fixed ThreadPool (5) 을 사용 합 니 다.스 레 드 탱크 병행 실행,
구체 적 인 demo 는 다음 과 같 습 니 다.
package com.ziglar.call;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.*;
public class Main
{
public static void main(String[] args)
{
// ,String ( )
List params = new ArrayList();
params.add("first");
params.add("Second");
params.add("Third");
params.add("Forth");
// , , Executors.newCachedThreadPool()
ExecutorService executor = Executors.newFixedThreadPool(5);
//
List> list = new ArrayList>();
for (String param : params)
{
list.add(new Job(param));
}
try
{
//
List> futures = executor.invokeAll(list);
// , ,
for (Future future : futures)
{
String result = future.get();
System.out.println(result);
}
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (ExecutionException e)
{
e.printStackTrace();
}
}
}
package com.ziglar.call;
import javax.xml.bind.SchemaOutputResolver;
import java.util.concurrent.Callable;
/**
* Created by Administrator on 2016/6/30.
*/
public class Job implements Callable
{
private String name;
private String jobName;
public Job(String name)
{
this.name=name;
}
@Override
public String call() throws Exception
{
this.jobName = Thread.currentThread().getName();
// ,
return " :" + jobName +", :"+ name;
}
}
이런 방식 을 제 가 사용 할 때 들 어 오 는 매개 변수 대상 의 차원 이 비교적 많 기 때문에 3 층 병발 포 함 됩 니 다. 하위 job 에서 부모 스 레 드 와 유사 한 방식 을 다시 사용 하고 여러 번 병발 합 니 다.
병발 하 는 연못 은 모두 5 인 데 주로 실제 매개 변수 집합 이 분 해 된 후에 도 5 개 정도 인 것 을 고려 하여 실제 운행 매개 변수 수량 이 많 고 영향 이 크 지 않다.
2. RecursiveTask 의 스 레 드 를 계승 하고 ForkJoinPool forkJoinPool = new ForkJoinPool () 을 사용 합 니 다.이런 것 은 집합 을 세분 화하 여 병발 할 수 있다.
(보충 필요)
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
java. util. concurrent 패키지 의 해체@Date 2019-7-8 11:25*/public class BlockingQueueExample {public static void main(String[] args) {BlockingQueue blockingQ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.