Java:线程无限循环

问题描述:

我想编写一个程序,它轮询特定表中的新条目并将它们写入消息queueJava:线程无限循环

我想编写一个thread这将无限循环,并尝试获取数据库的独占在没有取得locklockthread.sleep()将被调用。

然后得到lock如果在数据库中找不到新记录thread.sleep()将被再次调用。 线程是最好的方式吗?还是应该使用类似timer的东西?

编辑:基本的问题归结为:如果我需要用java查询Oracle数据库,我写了一个线程,还是其他什么东西像一个定时器/ sheduledExecutor /触发?

+3

“有更好的方法吗?”问题不适合Stack Overflow。你最好自己编写一些代码并发布到[代码评论](http://codereview.stackexchange.com)。 – Michael

+0

现在每天与投票或长期投票相关的任务都被认为是不好的做法...您应该看看一些听众的... –

+0

@ΦXocę웃Пepeúpaツ您能详细说明一下吗? – user8096068

锁定生产中使用的表是一个坏主意。我建议创建一个触发器表,并在原始表中插入新条目时在触发器表中添加条目。现在,您可以在触发器表上使用您的方法。

+0

谢谢。但是我仍然需要锁定触发器表以及表中的列需要被轮询器挑选后更新。 – user8096068

+0

您需要锁定触发器表,但您仅为这些目的创建了该表。为什么你需要更新原始表中的列? –

+0

我的意思是我仍然需要锁定触发器表,因为触发器表中有一列需要更新。无论如何,我的主要问题不在于锁定。这是关于无限循环线程是否是轮询表的最佳方式。 – user8096068

您可以尝试每隔20秒进行一次固定间隔检查,您将检查数据库是否有新条目。使此固定间隔可配置(恒定)。例如: - Thread.sleep(20)