Java的TimeUnit枚举对于与时间有关的许多不同任务很有用,而不仅仅是并发;和其他类似Date的时间相关类是java.util的一部分.那么为什么TimeUnit是java.util.concurrent的成员?
解决方法
除了提供使用不同粒度时间的方法,TimeUnit还提供了诸如
timedJoin之类的线程感知方法:
public void timedJoin(Thread thread,
长时间超时)
抛出InterruptedException
我认为该类起源于帮助常见的并行编程任务,如延迟执行.因为它有两个不同的功能(管理时间粒度;应用时间概念到线程问题),这违反了single responsibility principle.
考虑到TimeUnit外部并发代码的实用性和受欢迎程度,一个更完善的解决方案可能是一个java.util.TimeUnit枚举,用于管理时间粒度,以及一个单独的java.util.concurrent类,用于线程中的应用程序.