同時制御のまとめ(2)
2180 ワード
1.java原子クラス.volatileキーワード
2.スレッドプール
固定サイズのスレッドプールの作成
キャッシュ・スレッド・プールの作成//スレッド数は、必要に応じて変更できます
単一スレッドプールの作成
スレッドプールを閉じる
shutdownとshutdown Nowの比較
スレッドプールでタイマを起動する
ScheduledExecutorServiceのscheduleメソッドを呼び出し、返されるScheduleFutureオブジェクトはタスクをキャンセルできます.
間隔繰返しタスクをサポートするタイミング方式は、絶対タイミング方式を直接サポートせず、相対時間方式に変換する必要があります.
3.callableとfuture(非常用)
4.ロックロックはsynchronizedに似ており、より柔軟で、リードロック、ライトロック、リードライトロックに分けられ、ライトロックは他のロックと反発している.
5.conditon条件はlockによって生成され、await()およびsignal()はobjectのwaitおよびnotifyに類似する.
バッファ実装例は以下の通りである(api demo).
6.同時ツール
Semaphore,CyclicBarrier,CountDownLatch,Exchanger
7.ブロック可能なキューArrayBlockingQueue
8.同期セット
java1.5 Collectionsツールクラスを使用して以前に提供されたsynchronizedCollectionsメソッド
iterator反復コレクションを使用する場合、コレクションを変更することはできません.そうしないと、iteratorスレッドメカニズムに関係するため、ConcurrentModificationExceptionが発生します.
java1.5提供できる同時クラスは次のとおりです.
ConcurrentHashMap
CopyOnWriteArrayList
CopyOnWriteArraySet
---授業は張孝祥先生から来ました.
2.スレッドプール
固定サイズのスレッドプールの作成
キャッシュ・スレッド・プールの作成//スレッド数は、必要に応じて変更できます
単一スレッドプールの作成
スレッドプールを閉じる
shutdownとshutdown Nowの比較
スレッドプールでタイマを起動する
ScheduledExecutorServiceのscheduleメソッドを呼び出し、返されるScheduleFutureオブジェクトはタスクをキャンセルできます.
間隔繰返しタスクをサポートするタイミング方式は、絶対タイミング方式を直接サポートせず、相対時間方式に変換する必要があります.
3.callableとfuture(非常用)
4.ロックロックはsynchronizedに似ており、より柔軟で、リードロック、ライトロック、リードライトロックに分けられ、ライトロックは他のロックと反発している.
5.conditon条件はlockによって生成され、await()およびsignal()はobjectのwaitおよびnotifyに類似する.
バッファ実装例は以下の通りである(api demo).
class BoundedBuffer {
final Lock lock = new ReentrantLock();
final Condition notFull = lock.newCondition();
final Condition notEmpty = lock.newCondition();
final Object[] items = new Object[100];
int putptr, takeptr, count;
public void put(Object x) throws InterruptedException {
lock.lock();
try {
while (count == items.length)
notFull.await();
items[putptr] = x;
if (++putptr == items.length) putptr = 0;
++count;
notEmpty.signal();
} finally {
lock.unlock();
}
}
public Object take() throws InterruptedException {
lock.lock();
try {
while (count == 0)
notEmpty.await();
Object x = items[takeptr];
if (++takeptr == items.length) takeptr = 0;
--count;
notFull.signal();
return x;
} finally {
lock.unlock();
}
}
}
6.同時ツール
Semaphore,CyclicBarrier,CountDownLatch,Exchanger
7.ブロック可能なキューArrayBlockingQueue
8.同期セット
java1.5 Collectionsツールクラスを使用して以前に提供されたsynchronizedCollectionsメソッド
iterator反復コレクションを使用する場合、コレクションを変更することはできません.そうしないと、iteratorスレッドメカニズムに関係するため、ConcurrentModificationExceptionが発生します.
java1.5提供できる同時クラスは次のとおりです.
ConcurrentHashMap
CopyOnWriteArrayList
CopyOnWriteArraySet
---授業は張孝祥先生から来ました.