Java的TimeUnit枚举对于许多与时间相关的不同任务非常有用,而不仅仅是并发性;其他与时间相关的类(如Date )也是java.util的一部分。那么,为什么TimeUnit是java.util.concurrent的成员呢?
发布于 2013-10-21 21:31:55
除了提供用于处理不同时间粒度的方法外,TimeUnit还提供了像timedJoin这样的线程感知方法。
public void timedJoin(Thread thread, long timeout) throws InterruptedException
我认为这个类起源于帮助执行常见的并发编程任务,比如延迟执行。目前,它有两个不同的功能(管理时间粒度;将时间概念应用于线程问题),这违反了单一责任原则。
考虑到TimeUnit在并发代码之外的实用性和流行程度,更整洁的解决方案可以是管理时间粒度的java.util.TimeUnit枚举,以及用于线程处理中的应用程序的单独的java.util.concurrent类。
发布于 2013-10-21 21:48:35
这可能是出于历史原因:
TimeUnit在并发实用程序中被广泛使用。有趣的是,Java8中的新日期API有一个枚举,它类似于TimeUnit枚举,但适用于日期和时间。特别是,可以将ChronoUnit转换为Duration。
发布于 2013-10-21 21:22:34
TimeUnit是由并发性专家组主要为并发实用程序开发的。这样的库通常是使用java.之外的典型第三方包开发的.允许使用现有JVM进行测试的包。稍后,通过重命名包来集成它们。因此,这主要是一个历史原因。
https://stackoverflow.com/questions/19504816
复制相似问题