访问线程池正在运行的对象



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

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

是的,您的代码应该可以正常工作但是,您需要确保在ChatRoom对象中的字段上正确同步,因为线程池线程将从其run()方法访问这些字段,外部线程也将通过从ConcurrentHashMap获取对象来访问这些字段。这将是你的挑战。

相关内容

  • 没有找到相关文章

最新更新