问题描述:使用ThreadPool的scheduleAtFixedRate函数做定时触发任务,在同一个触发时间点只会有一个线程会启动,但是现在遇到的问题是在一个触发时间点,同时启动了4个线程,
请问下各位大侠,在什么场景或情况下会出现在同一个触发时间点会起4个线程?备注:在触发4个线程之前,scheduleAtFixedRate函数都是在同一个触发时间点,只会启动一个线程;
在触发4个线程之后 ,scheduleAtFixedRate函数都是在同一个触发时间点,只会启动一个线程; threadPool.scheduleAtFixedRate(runnable,
getDelayTime(),
getExePeriods(),
TimeUnit.SECONDS);各位大侠,紧急啊。
请问下各位大侠,在什么场景或情况下会出现在同一个触发时间点会起4个线程?备注:在触发4个线程之前,scheduleAtFixedRate函数都是在同一个触发时间点,只会启动一个线程;
在触发4个线程之后 ,scheduleAtFixedRate函数都是在同一个触发时间点,只会启动一个线程; threadPool.scheduleAtFixedRate(runnable,
getDelayTime(),
getExePeriods(),
TimeUnit.SECONDS);各位大侠,紧急啊。
解决方案 »
- myeclipse 10下开发Struts出现ClassNotFoundException
- JavaMail注册与IMail的问题
- 对于框架的问题,大家来讨论交流一下吧
- 哥哥姐姐们小弟有一问题
- 请教基于MyEclipse6.5的SSH整合的问题
- 请教一个structs的问题!
- EJB3(中文版)
- 请问在java中有没有办法获得一个容器对像占了多少内存?
- HIBERNATE2.1.2对MYSQL数据库版本的支持?
- 请教,谁可以给个例子看看?用户登陆时的编码,名称,部门等信息存在那里?用Swing写C/S时。
- spring3 mvc ajax json 返回时 500错误
- 请大家帮忙给点复习java基础,3大框架的复习资料。
2 差不多同一时间启动了scheduleAtFixedRate,使用的统一runable对象。
可能只是一个场景,希望对你有帮助。
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;public class ScheduleThreadTest { /**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
ScheduledExecutorService service = null;
try {
service = Executors.newScheduledThreadPool(4);
final Runnable myRunable = new Runnable() {
public void run() {
System.out.println(Thread.currentThread().getName());
}
}; service.scheduleAtFixedRate(myRunable, 0, 1, TimeUnit.SECONDS);
service.scheduleAtFixedRate(myRunable, 0, 1, TimeUnit.SECONDS);
service.scheduleAtFixedRate(myRunable, 0, 1, TimeUnit.SECONDS);
service.scheduleAtFixedRate(myRunable, 0, 1, TimeUnit.SECONDS); service.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
} finally {
if (service != null) {
service.shutdown();
}
}
}
}
throws InterruptedException
{
ScheduledExecutorService service = null;
try
{
service = Executors.newScheduledThreadPool(1);
final Runnable myRunable = new Runnable()
{
public void run()
{
System.out.println(Thread.currentThread().getName());
}
};
service.scheduleAtFixedRate(myRunable, 0, 1, TimeUnit.SECONDS);
service.awaitTermination(Long.MAX_VALUE, TimeUnit.SECONDS);
}
finally
{
if (service != null)
{
service.shutdown();
}
}
}
像这种的代码,我遇到的就是在同一个触发周期内启动了4个线程。所以就想问下,在什么情况会出现这种呢?都搞了2天了,暂时还没头绪。
我又没你的代码,这里只是一个例子,说明一下有可能的情况而已,你需要结合自己的代码,log分析。