我正在使用计划执行服务
私有的执行池=新的执行池(1);
以固定速率运行runnable
pool。scheduleAtFixedRate(新的CoolRunnable(),10,10,时间单位)。毫秒)
这个线程池等待前一次执行完成,但我希望它每10毫秒运行一次runnable,不管前一次执行是否完成。
我该怎么做?
编辑:修复了用连接池替换MySQL连接的问题。正常的连接方法是同步的,这就是为什么Runnable必须互相等待的原因。
为此,您需要每隔10秒向ExecutorService
提交一个任务。此ExecutorService
将负责运行以下任务:
ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
ExecutorService workers = Executors.newCachedThreadPool();
scheduler.scheduleAtFixedRate(new Runnable {
@Override
public void run() {
workers.submit(new CoolRunnable());
}
}, 10, TimeUnit.SECONDS);
如果旧的线程仍在工作,使用cachedThreadpool将创建新的线程。这样做要小心:如果任务运行时间更长,每10秒添加一个新任务可能会创建大量并发线程。
在我的Eclipse项目(Eclipse Luna)中,我有一些JUnit测试用例,我不想在完全回归测试中运行。例如,因为它们需要用户在场以验证结果(例如,如果声音正确播放),或者因为它们只在特定系统上正确运行。这些测试大多是在对被测试类进行更改时手动使用的。我已经使用来忽略这些测试。 当我从Eclipse运行一个包含忽略测试的类(运行为->Junit测试)时,它将在测试列表中显示忽略的测试。
问题内容: 我必须使用大量未明确指定serialVersionUID的已编译Java类。由于它们的UID是由编译器任意生成的,因此即使实际的类定义匹配,许多需要序列化和反序列化的类最终也会导致异常。(当然,这是所有预期的行为。) 对我来说,返回并修复所有第3方代码是不切实际的。 因此,我的问题是:是否有任何方法可以使Java运行时 忽略 serialVersionUID中的差异,并且仅在结构上存在
我试图从现有数据库(MySQL)中使用liquibase(3.5.5)。 > C: /液化酶-3.5.5/liquibase。bat—驱动程序=com。mysql。jdbc。驱动程序^--classpath=C:/Libraries/mysql-connector-java-5.1.37-bin。jar^--changeLogFile=db。变更日志。xml^--url=“jdbc:mysql:/
我希望一个进程在我启动我的网络服务后运行,然后每隔30分钟左右运行一次(我现在用较小的延迟测试它,只是为了看看它是否工作),但是我的进程从来不会运行超过一次。我做错了什么? 这是我的密码:
我们有一个Spring-Boot1.0.rc1应用程序,为日志配置了logback,并在src/test/resources中有一个logback.xml文件。当我们从maven运行spring-boot时,日志文件似乎会被看到和尊重。(这是我们在spring-boot徽标之后所需的日志格式) 但是,当我们删除一个溜进src/java/resources的流氓logback.xml文件,并在其他所
我有一个ScheduledExecutorService,我想用它来计划一个具有一定延迟的Runnable的执行。然而,当我调用它的schedule方法时,延迟被完全忽略,Runnable被立即执行。这是我的代码: 我的SchduledExecutorService构造函数: 这是对其调度方法的调用(由日志包围): 日志允许我看到,“计划前”和“设置清除…”之间只有20-30毫秒的延迟,而不是我预