对于我的程序,我使用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访问聊天室,或者我必须对线程池做些什么?
答案 0 :(得分:1)
这是否可行,因为我仍然可以从ConcurrentHashMap访问聊天室,或者我必须对线程池做些什么?
是的,您的代码应该可以正常工作。 但,您需要确保正确同步ChatRoom
个对象中的字段,因为他们将run()
从<{1>}访问两个线程池线程以及外部线程通过从ConcurrentHashMap
获取对象的方法。那将是你的挑战。