首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么TimeUnit是java.util.concurrent的成员?

为什么TimeUnit是java.util.concurrent的成员?
EN

Stack Overflow用户
提问于 2013-10-21 21:10:56
回答 5查看 1.2K关注 0票数 16

Java的TimeUnit枚举对于许多与时间相关的不同任务非常有用,而不仅仅是并发性;其他与时间相关的类(如Date )也是java.util的一部分。那么,为什么TimeUnitjava.util.concurrent的成员呢?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-10-21 21:31:55

除了提供用于处理不同时间粒度的方法外,TimeUnit还提供了像timedJoin这样的线程感知方法。

public void timedJoin(Thread thread, long timeout) throws InterruptedException

我认为这个类起源于帮助执行常见的并发编程任务,比如延迟执行。目前,它有两个不同的功能(管理时间粒度;将时间概念应用于线程问题),这违反了单一责任原则

考虑到TimeUnit在并发代码之外的实用性和流行程度,更整洁的解决方案可以是管理时间粒度的java.util.TimeUnit枚举,以及用于线程处理中的应用程序的单独的java.util.concurrent类。

票数 3
EN

Stack Overflow用户

发布于 2013-10-21 21:48:35

这可能是出于历史原因:

  • 在过去的几年里,遗留日期API并没有发生多大的变化。
  • TimeUnit在并发实用程序中被广泛使用。

有趣的是,Java8中的新日期API有一个枚举,它类似于TimeUnit枚举,但适用于日期和时间。特别是,可以将ChronoUnit转换为Duration

票数 5
EN

Stack Overflow用户

发布于 2013-10-21 21:22:34

TimeUnit是由并发性专家组主要为并发实用程序开发的。这样的库通常是使用java.之外的典型第三方包开发的.允许使用现有JVM进行测试的包。稍后,通过重命名包来集成它们。因此,这主要是一个历史原因。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19504816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档