スレッドを使用してリーダーライターの問題の解決策を開発しました。
私は 1 つのモニター クラスと 1 つのリーダーと 1 つのライター クラスを持っています。リーダーとライター クラスはスレッドを拡張します。
今、私は次のようなコードをテストしています:
public static void main(String[] args) {
ReadersWriters controller = new ReadersWriters();
Reader r0=new Reader(controller);
Reader r1=new Reader(controller);
Reader r2=new Reader(controller);
Reader r3=new Reader(controller);
Writer w0=new Writer(controller);
Writer w1=new Writer(controller);
Writer w2=new Writer(controller);
Writer w3=new Writer(controller);
r0.run();
w0.run();
r2.run();
r3.run();
r1.run();
r3.run();
r2.run();
w2.run();
r1.run();
w1.run();
w3.run();
}
そして、私が得ている出力はこれです:
Reader number 0 arrives
Reader number 0 starts to read
Reader number 0 finishes reading
Writer number 0 arrives
Writer number 0 starts to write
Writer number 0 finishes writing
Reader number 2 arrives
Reader number 2 starts to read
Reader number 2 finishes reading
...等々。ここでの問題は、同時実行性をテストできないことです。メイン プログラムがリーダーまたはライターを 1 つずつ呼び出しているように見えるため、これは私が達成しようとしている種類のテストではありません。
誰でも私を助けてくれませんか。必要な説明があればお気軽にお尋ねください。