0

私のプログラムでは、ConcurrentHashMapを使用して、複数の実行中のオブジェクトへの参照を保持していました。私のサーバーには次のものがあります。

public class Server {

private ConcurrentHashMap<String, ChatRoom> _chatRooms;
private ExecutorService _chatRoomExecutor;
...

// create a new channel executor to handle 50 chatrooms
_chatRoomExecutor= Executors.newFixedThreadPool(50);
// create an admin chatroom for testing at this point
_chatRooms.put("/admin", new Channel("/admin"));
// execute that chatroom
_chatRoomExecutor.execute(_chatRooms.get("/admin"));

ConcurrentHashMapからチャットルームにアクセスできるので、これは機能しますか、それともスレッドプールで何かをする必要がありますか?

4

1 に答える 1

1

ConcurrentHashMapからチャットルームにアクセスできるので、これは機能しますか、それともスレッドプールで何かをする必要がありますか?

はい、コードは正常に機能するはずです。 ただし、オブジェクトのフィールドは、スレッドプールスレッドによるメソッドからも、からオブジェクトを取得することによる外部スレッドからもアクセスChatRoomされるため、オブジェクトのフィールドで適切に同期していることを確認する必要があります。それがあなたの挑戦になるでしょう。run()ConcurrentHashMap

于 2012-09-14T20:51:10.743 に答える