- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个提交给 ExecutorService
的任务列表。 .但是我需要在凌晨 2:30 的最后期限之前关闭 ExecutorService,即使任务没有完成。我怎样才能做到这一点?我检查了API,只有一个方法如下:
ExecutorService exec = //...
exec.awaitTermination(100, TimeUnit.MILLISECONDS);
long timeDiff= calculate(now, deadline);
// Gap: assuming current thread does not have chance to run for 10 minutes...
exec.awaitTermination(timeDiff, TimeUnit.MILLISECONDS);
最佳答案
您可能不是指“原子地”,我认为您的意思是“毫不拖延”。这样timeDiff
调用 exec.awaitTermination()
时仍然正确.
我认为这是正确的,所以答案是:你不能。
如果您对详细信息感兴趣:
您的 Java 代码被翻译成 Java 字节码,这些由 JVM 执行,JVM 是在您的操作系统上运行的常规进程。而且您根本无法阻止操作系统中断线程(我假设您使用具有抢先式多任务处理的操作系统(每个 UNIX(包括 Linux 和 Mac OS X)、Windows 95 或更高版本……))。
即使您可以在一个 Java 字节码中完成所有这些操作,它仍然无法按照您的意愿工作,因为操作系统可能会在一个 Java 字节码的中间打断您。
甚至是 awaitTermination(Date deadline)
方法在这里无济于事。它也必须由某人实现。
你能做的最好的事情就是用尽可能少的字节码来做。
如果我是你,我可能会像你的代码那样做。
但是,这可能更精确一点:
Date deadline = ....;
final TimerTask stopTask = new TimerTask() {
public void run() {
exec.shutdownNow();
}
};
new Timer().schedule(stopTask, deadline);
shotdownNow()
立即在
deadline
处执行.实际上,设置
deadline
到实际截止日期前一秒应该没问题:-)
关于java - 为什么没有 "awaitTermination(Date deadline)"方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7164337/
我们正在使用开发人员 python 指南和 Python 数据 2.15 库,并按照应用引擎的示例进行说明。createSite("测试站点一", description="测试站点一", sourc
我有go编写的grpc服务器和一个python客户端,有时会出现如下错误: eggs/grpcio-1.0.0-py2.7-linux-x86_64.egg/grpc/_channel.py\", l
我想在 C 中实现 DEADLINE 调度策略。我知道该功能自 Linux 3.14.10 开始实现。我正在使用 Ubuntu 14.04 Linux #### 3.17.0-031700-lowla
我编写了一个更新函数,但是多次执行将产生错误context deadline exceeded。 我的功能: func Update(link string, m bson.M) { conf
我有一个任务的预定开始日期和完成任务的工作量, 例如,在 N=5 以下的情况下,开始日期为 如何根据 scheduled_date+5days 自动计算截止日期? 最后我有以下内容: DEADL
我像这段代码一样使用 boost deadline_timer: boost::asio::io_service g_io; #define DEL(x) {delete x; x = NULL;}
我正在开发一个任务调度器,我想使用 EDF 调度。我需要安排的任务集仅包含截止日期等于其周期的任务,并且必须定期安排任务。我遇到的问题是任务一旦开始执行就不能中断。 我知道只有当任务被抢先安排在单个处
我正在发送一个带有指定 10 秒超时的上下文的请求: ctx, cancel := context.WithTimeout(context.Background(), time.Second * 10
我有一个提交给 ExecutorService 的任务列表。 .但是我需要在凌晨 2:30 的最后期限之前关闭 ExecutorService,即使任务没有完成。我怎样才能做到这一点?我检查了API,
我正在尝试在多个对等点之间实例化链码,每个对等点都在各自的组织中。出于调试目的,我创建了一个 channel testchannel只有一个组织overseer与单个对等 peer0 .我能够 创建
我正在尝试在Hyperledger Fabric示例中的测试网络中创建一个 channel : localhost:~/fabric-samples/test-network$ ./network.s
我有这个简单的程序,它使用 boost 库在 1 秒内输出递增的整数: #include #include #include using namespace std; void func1(bo
我正在研究 Linux IO 调度程序。 Linux Deadline IO Scheduler 使用“front_merges”属性来决定请求是前合并还是后合并。但我不明白它是如何工作的,因为它只在
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
在 Emacs 组织模式中,我知道我可以调用议程“匹配” View (使用 C-a m),然后使用以下搜索字符串查找截止日期设置为今天的所有 TODO 项目: DEADLINE="" 但是,我想在我的
工作节点正在进入“NotReady”状态, 的输出中出现错误kubectl 描述节点 : ContainerGCFailed rpc 错误:代码 = DeadlineExceeded desc = 超
我要查询的Firebase集合实际上是空的。内含零份文件。即使这样,当查询它时,我仍然收到此错误 我正在AWS的LAMBDA函数中执行此操作。我知道查询有效,因为它有时确实会返回结果,但是它是非常随机
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 4年前关闭。 Improve this
在使用 Dialogflow API 进行几次交易后,DEADLINE_EXCEEDED: Deadline Exceeded错误来了,在那之后我总是需要重新启动服务,然后它又开始工作了一段时间。即使
我想查找按小时和天分割的历史实际风和预报风。 我对一天中的某个时间有多个预报。我的第二天交易的交易截止日期为东部标准时间上午 10 点,因此我希望在此之前的最新预测与该小时的实际风在同一条线上。 使事
我是一名优秀的程序员,十分优秀!