timeout的实现不是等待到timeout这么长时间再操作，而是最长等待到timeout时间，可以参考一下LinkedBlockingQueue的poll实现。应该是不断去尝试获取