0

私はテクニカル ライターであり、Java の知識があり、高度にスレッド化された古い Java コードのスレッドを追跡する仕事をしてきました。コードの元の作者はもうここにいないので、それがどのように機能するかを正確に把握しようとしています. Threadメソッドを拡張するが実装しないクラスに遭遇しましたrun()。拡張するThreadが実装しないrun()(もしあれば)ポイントは何ですか?

このクラスのメソッドの 1 つに次のようなものがあることに気付きましたsynchronized

public synchronized void incrementCounter() {
  this.counter++;
}

しかし、他のすべての方法は同期されていないようです。実際、他のメソッドのほとんどは単なる getter と setter です。メソッドを宣言するために拡張Threadまたは実装が必要ですか? ありがとう!Runnablesynchronized

4

3 に答える 3

3

私の推測では、この古いコードは、いくつかの標準スレッド プール ライブラリ、ExecutorService などよりも前に作成されたものです。おそらく、同様の機能を実装しようとする会社の試みでした。(または、ここで発明されていない応答)コードが常にそうである限り

Thread thread = new ThisSpecialThreadClass(someRunnable);
thread.start();

あなたはそれが持っているどんな「利益」も得るでしょう、そしてあなたのコメントで指摘したように、それは最終的に呼び出すべきですsomeRunnable.run().

于 2013-06-06T20:57:51.010 に答える