访问由线程池运行的对象

时间:2012-09-14 20:36:24

标签: java multithreading executors

对于我的程序,我使用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访问聊天室,或者我必须对线程池做些什么?

1 个答案:

答案 0 :(得分:1)

  

这是否可行,因为我仍然可以从ConcurrentHashMap访问聊天室,或者我必须对线程池做些什么?

是的,您的代码应该可以正常工作。 ,您需要确保正确同步ChatRoom个对象中的字段,因为他们将run()从<{1>}访问两个线程池线程以及外部线程通过从ConcurrentHashMap获取对象的方法。那将是你的挑战。