Javaマルチスレッド、同時雑記
3790 ワード
マルチスレッドに関連するクラスは、次のクラスに分けられます.実行可能オブジェクト:最も基本的なマルチスレッド エフェクタ:マルチスレッドプログラミングを簡略化 ツールクラス 容器 同時制御 一、実行可能オブジェクト:
1、Runnable:
実行単位:Thread
スレッドを作成する2つの方法(Java API docから):
Runnableインタフェースは非常に簡単です.
Threadクラスは複雑です
2、Callable:Runnableに対して、Callableは結果を返し、checked exceptionを投げ出すことができる.
3、Future:Callableに対して、非同期で実行する操作
FutureTask:以上はインタフェースで、これは最初のクラスです.
Runnable、Futureを実現したので、FutrueTaskをExecutorに捨てることができます.
二、アクチュエータ:
Executor:タスクの管理
ExecutorService:RunnableとCallableを実行し、Future、非同期を返すことができます.shut down、すなわち新しいtaskを拒否することができる.
直接実装クラス:ThreadPoolExecutor
間接実装クラス:ScheduledThreadPoolExecutor.ThreadPoolExecutorと比較して、ScheduledThreadPoolExecutorは、指定された遅延後にコマンドを実行するか、定期的にコマンドを実行するように別途スケジュールできます.
CompletionService
続きは...
三、容器:
BlockingDeque
続きは...
四、同時制御:
Synchronized
CountDownLatch
続きは...
五、工具類:
Executors:一部の工場、ツール方法
refer:
1、Java同時性とマルチスレッド紹介目次:http://ifeve.com/java-concurrency-thread-directory/
1、Runnable:
実行単位:Thread
スレッドを作成する2つの方法(Java API docから):
class PrimeThread extends Thread {
long minPrime;
PrimeThread(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
PrimeThread p = new PrimeThread(143);
p.start();
class PrimeRun implements Runnable {
long minPrime;
PrimeRun(long minPrime) {
this.minPrime = minPrime;
}
public void run() {
// compute primes larger than minPrime
. . .
}
}
PrimeRun p = new PrimeRun(143);
new Thread(p).start();
Runnableインタフェースは非常に簡単です.
package java.lang;
public interface Runnable {
public abstract void run();
}
Threadクラスは複雑です
package java.lang;
public class Thread implements Runnable { // Thread Runnable, Thread run 。
. . .
}
2、Callable:Runnableに対して、Callableは結果を返し、checked exceptionを投げ出すことができる.
package java.util.concurrent;
public interface Callable<V> {
V call() throws Exception; // V
}
3、Future:Callableに対して、非同期で実行する操作
package java.util.concurrent;
public interface Future<V> {
boolean cancel(boolean mayInterruptIfRunning);
boolean isCancelled();
V get() throws InterruptedException, ExecutionException;
V get(long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
FutureTask:以上はインタフェースで、これは最初のクラスです.
Runnable、Futureを実現したので、FutrueTaskをExecutorに捨てることができます.
二、アクチュエータ:
Executor:タスクの管理
package java.util.concurrent;
public interface Executor {
void execute(Runnable command); // Runnable , void。
}
ExecutorService:RunnableとCallableを実行し、Future、非同期を返すことができます.shut down、すなわち新しいtaskを拒否することができる.
直接実装クラス:ThreadPoolExecutor
間接実装クラス:ScheduledThreadPoolExecutor.ThreadPoolExecutorと比較して、ScheduledThreadPoolExecutorは、指定された遅延後にコマンドを実行するか、定期的にコマンドを実行するように別途スケジュールできます.
package java.util.concurrent;
public interface ExecutorService extends Executor {
void shutdown();
List<Runnable> shutdownNow();
boolean isShutdown();
boolean isTerminated();
boolean awaitTermination(long timeout, TimeUnit unit)
throws InterruptedException;
<T> Future<T> submit(Callable<T> task);
<T> Future<T> submit(Runnable task, T result); // Result ??
Future<?> submit(Runnable task);
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
throws InterruptedException;
<T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException;
<T> T invokeAny(Collection<? extends Callable<T>> tasks)
throws InterruptedException, ExecutionException;
<T> T invokeAny(Collection<? extends Callable<T>> tasks,
long timeout, TimeUnit unit)
throws InterruptedException, ExecutionException, TimeoutException;
}
CompletionService
続きは...
三、容器:
BlockingDeque
続きは...
四、同時制御:
Synchronized
CountDownLatch
続きは...
五、工具類:
Executors:一部の工場、ツール方法
refer:
1、Java同時性とマルチスレッド紹介目次:http://ifeve.com/java-concurrency-thread-directory/