{"issue":{"state":"open","pull_request":{"diff_url":null,"html_url":null,"patch_url":null},"milestone":null,"user":{"avatar_url":"https://secure.gravatar.com/avatar/9bd0a2752ec49d888172ed1effd521d8?d=https://a248.e.akamai.net/assets.github.com%2Fimages%2Fgravatars%2Fgravatar-140.png","gravatar_id":"9bd0a2752ec49d888172ed1effd521d8","url":"https://api.github.com/users/trustin","login":"trustin","id":173918},"labels":[],"assignee":null,"updated_at":"2011-11-16T13:41:49Z","comments":0,"closed_at":null,"url":"https://api.github.com/repos/netty/netty/issues/58","body":"`ChannelFuture` holds a list of `ChannelFutureListener`s.  A user can add or remove one or more `ChannelFutureListener`s from any thread until the future is complete.  Once complete, only a single thread will retrieve the list of the listeners exclusively (i.e. no other threads will ever read or write it.)\r\n\r\nCurrently, we just use a synchronized block, but it's not optimal and we need to experiment with various data structures.\r\n\r\nTo make this happen:\r\n\r\n1. Write a performance test application dedicated to simulate the real world `ChannelFuture` usage.\r\n1. Design and implement the optimal data structure.\r\n\r\n","html_url":"https://github.com/netty/netty/issues/58","title":"Find the optimal data structure for List<ChannelFutureListener>","number":58,"id":2256302,"created_at":"2011-11-16T13:41:49Z"},"action":"opened"}