JavaでRunnableを実装するクラスを持つことができ、クラスのオブジェクトがwait()になるとスレッドが信号を受け取るまで実行を停止するかどうか疑問に思っています。同じクラスの別のオブジェクトが実行を継続するように通知できますか?理想的には私が行うことができるようにしたいものをどのように私はwait/notifyAllを使用するのですか?
は次のようになります。これは可能とどのように私はそれをやって行くだろうもしそうなら
public class ThreadClass implements Runnable{
public void run(){
//.. Does some arbitrary work
if(aCondition){ //have it wait until something signals it to contine exection.
this.wait();
}
//Continues to do more work.
//finished whatever it needed to do. Signal all other threads of this object type to continue their work.
this.notifyAll();
}
}
ですか?オブジェクト自体が同じタイプのオブジェクトや他のすべてのオブジェクトを管理できるようにしようとしています。このクラスを使用する誰もそれを管理することを心配する必要はありません。
どのようにマネージャを作成するのに役立ちますか?現在のところ、スレッドオブジェクトを作成するクラスは1つしかありませんが、すべてのスレッドが一時停止するわけではありません。リソースが別のスレッドによって解放されるまで、約1/10のスレッドが停止する必要があります。 – user597608
@ user597608:もっと情報を知る必要があります。私たちは、これが何をしようとしているのか、本当に分かりません。マネージャーに各インスタンスの作成を担当させることができれば、それぞれのインスタンスに参照を渡すことができるので、同じマネージャーが管理する他のインスタンスに何かを通知する必要があるときにコールバックできます...それはあなたを助ける? –
私はUDPコールを待っているサーバを作っています。メッセージを取得し、メッセージを解析してSQLiteデータベースに入力する新しいスレッドを作成します。 sqliteデータベースがファイルであるため、データベースがロックされるという問題が発生しています。接続プール(BoneCP)を試しましたが、コードのパフォーマンスが1/10に低下しました。現時点では、私のサーバは10 msg /秒を処理できますが、これ以上のものはありません。 – user597608