Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在一段时间后杀死java中的线程_Java_Multithreading_Twitter_Twitter4j - Fatal编程技术网

在一段时间后杀死java中的线程

在一段时间后杀死java中的线程,java,multithreading,twitter,twitter4j,Java,Multithreading,Twitter,Twitter4j,我有一个如下的用例(在JAVA中) 我收到客户的请求 例如:在此日期之前执行推特流媒体任务 任务=推特流 关键词={“#今天”,“#苹果”} 时间=至2017年2月5日 我所做的是,我在收到的每个请求上打开一个新线程,并开始我的任务,即推特流并将其保存到数据库中。 我想做的是线程应该停止流式处理,并在这个日期(2月5日)之后被杀死 如何实现这种类型的用例?您可以使用日历类并检查 Calendar c = Calendar.getInstance(TimeZone.getTimeZone(Zo

我有一个如下的用例(在JAVA中)

我收到客户的请求

例如:在此日期之前执行推特流媒体任务

  • 任务=推特流
  • 关键词={“#今天”,“#苹果”}
  • 时间=至2017年2月5日
我所做的是,我在收到的每个请求上打开一个新线程,并开始我的任务,即推特流并将其保存到数据库中。

我想做的是线程应该停止流式处理,并在这个日期(2月5日)之后被杀死


如何实现这种类型的用例?

您可以使用
日历类并检查

Calendar c = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("CET")));
c.set(Calendar.MONTH, 1)
c.set(Calendar.DAY_OF_MONTH, 5)
c.set(Calendar.HOUR_OF_DAY, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
c.set(Calendar.MILLISECOND, 999);

while(true){
 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone(ZoneId.of("CET")));
 if(cal.getTime().after(c.getTime()) return;
}

中断线程。线程是否在循环中?你能检查一下当前的日期吗?到2月5日就退学吗?请添加相关代码。这里有一个例子。对于两个任务,一个执行主程序,另一个被安排在特定时间中断第一个任务。使用易失性布尔值控制循环(形式为while!stop)。当你在某个日期后阅读第一条推文时,只需将stop设置为true。谢谢你的回答。不使用while循环就可以实现此目的的任何其他方法。@PrakashPandey没有在线程上设置到期计时器的内置方法。你可以通过在线程中设置到期日来实现,比如我的答案或者上面的一个注释,其中另一个对象杀死了线程。Murat,垃圾收集器会在
返回后删除所有线程资源吗?@PrakashPandey如果不再引用该线程,则为Yes。如果它是匿名的,它将被垃圾收集。
Calendar c=Calendar.getInstance();c.set(日历年,2017年);c.设置(日历月,2);c.设置(日历日/月/日,2);c.设置(日历小时/天,20);c.设置(日历分钟,43);c.set(日历秒,0);c.set(日历毫秒,0)