0

この学校の課題では、Java スレッドを使用してクライアント サーバー タイプのアプリケーションをシミュレートする必要があります (ソケットなどは必要ありません)。どうすればそれを行うことができますか?

サーバーを起動し、クライアントがそれを呼び出すのを待つ方法が必要です。その後、応答を返す必要があります。私の頭の中の「API」は次のようなものでした:

server.start()
client1.connect(server)
client2.connect(server)

x = client1.getData()
y = client2.getData()

success1 = client1.sendData(1)
success2 = client2.sendData(2)

server|client.run メソッドはどのように見えるでしょうか? 今のところ、メソッド呼び出しをハードコーディングできると仮定します。

4

2 に答える 2

1

次のアプローチを使用することをお勧めし ます

キューに読み取るデータがあります。
「プロデューサー」スレッドは、データをキューに「プッシュ」するスレッドです。ブロッキング キューの実装
のいずれかを使用することをお勧めします。また、 「コンシューマー プロデューサー」パターン についてもお読みになることをお勧めします。 また、ブロッキング キューにより、マルチスレッド プログラミングでは推奨されない「ビジー待機」が不要になります。

于 2013-02-23T09:23:12.807 に答える
0

あなたが提供した説明から私が提案できるのは、次のようなものを書くべきだということです

1) すべてのクライアントがメッセージを送信できるキューを 1 つ用意します。

2) while(true) のような無限ループで実行されているサーバーは、キューに入れられた新しいメッセージを待機し、見つかった場合はそれを処理し、処理済みとしてマークします。

3) クライアント スレッドの仕事は、メッセージを作成してキューに入れることです。そして、新しいメッセージがキューに追加されたことをサーバーに通知して、サーバーが処理のために新しいメッセージが到着したことを知ることができるようにします。

このプログラムを機能させるには、Thread の notify、notifyAll()、および wait() メソッドを学ぶ必要があると思います。したがって、基本的にソケットなしで、探しているのは「スレッド間通信」です。このリンクが役に立ちます。

お役に立てれば。

于 2013-02-23T09:20:29.757 に答える