2017-08-09 191 views
-5

我想編寫一個程序,它輪詢特定表中的新條目並將它們寫入消息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

鎖定生產中使用的表是一個壞主意。我建議創建一個觸發器表,並在原始表中插入新條目時在觸發器表中添加條目。現在,您可以在觸發器表上使用您的方法。

+0

謝謝。但是我仍然需要鎖定觸發器表以及表中的列需要被輪詢器挑選後更新。 – user8096068

+0

您需要鎖定觸發器表,但您僅爲這些目的創建了該表。爲什麼你需要更新原始表中的列? –

+0

我的意思是我仍然需要鎖定觸發器表,因爲觸發器表中有一列需要更新。無論如何,我的主要問題不在於鎖定。這是關於無限循環線程是否是輪詢表的最佳方式。 – user8096068

-1

您可以嘗試每隔20秒進行一次固定間隔檢查,您將檢查數據庫是否有新條目。使此固定間隔可配置(恆定)。例如: - Thread.sleep(20)