Process
のマルチスレッドワーカープールに関するJavaプログラムを作成しています。 Process
クラスの各インスタンスは、いくつかの作業を行うために追加のスレッドを1つ生成する必要があります。しかし、そのスレッドは、インスタンス自体によって生成され、他の誰も生成しないでください。残念ながらRunnable.run
は 'public'なので、私は実際に何かのトリックをせずにこれを強制することはできません。Java:私的に 'Runnable'クラスで 'run'を呼び出しています
- 実装にこの
Runnable
Process
で書き込みを実装します:
コード:もちろん
class Process implements Runnable {
private boolean threadkey = false;
public void run() {
synchronized(threadkey) {
// is someone wrongly calling 'run'?
if(!threadkey)
return;
/* switch off threadkey to make sure
it cannot be called meaningfully again */
threadkey = false;
}
/* continue processing
*
*/
return;
}
を、ここで
は、私が使用する予定のトリックがありますにしたいときに今私がする必要があるすべて正当には、電話をかける前に「スレッドキー」(プライベート)をオンに切り替えることです。
エレガント?か否か?それとも良い方法がありますか?あるいは、私はこれを強制することに気をつけてはならないし、「実行」を呼び出さないことを説明するきちんとした小さなコメントを書くべきですか?
「実行中」を実行する必要があるクラス内から「実行」を呼び出す人もいますか?