私はred-blackツリーを使ってスケジューラを構築しようとしています。 ツリーには実行可能なすべての実行可能なタスクがあります。ツリー内のタスクの1つを4つの作業スレッドの1つに割り当てる独自のスケジュール関数を作成する予定です。すべてのスレッドは定期的にスケジューラにアクセスして、同じタスクを続行するか新しいタスクに切り替える必要があるかどうかを確認します。 これで、特定のタスクを停止して新しいタスクを割り当てるスレッドを作ることができます。 停止したタスクはツリーに戻り、他のスレッドが実行を続けるのを待ちます。与えられたスレッドのタスクを切り替える
私は、停止するタスクから格納する変数/データがないと仮定します。
私が見たすべてのリソースは、Java Executorサービスを使用するか、単なるタスクをスレッドに割り当てるだけです。だから、私はここにいくつかの助けが必要です...
シンプル:ノーウェイです。あなたが得ることができる最も近いのは、メソッド呼び出しごとにちょっとした作業を行う特定のタスクインターフェイスです。メソッドが返ってきたら、あなたのチェックをすることができます。 –
あなたが言ったとき:* "すべてのスレッドは定期的に同じタスクを続けるか、新しいタスクに切り替える必要があるかを見るために定期的にスケジューラーにアクセスします" *ということは、タスクそのもののコードが何らかの 'yield'関数定期的に自分自身をスワップアウトすることができます。その場合、これはより実行可能な問題になります。 – selbie
各タスクはそれ自身のスレッドであり、スケジューラ(自身のスレッド上で実行している)が各タスクスレッドで 'suspend'と' resume'を呼び出すだけで、4つのスレッドがいつでも実行できることを保証できますか? 'suspend'と' resume'はJavaでは非推奨ですが、これが学問的な目的のためのものであれば、シンプルな設計に役立ちます。 – selbie