class SendMail implements Runnable {
Thread OracleBakThread;
Thread SleepThread = new Thread(this);
public static void main(String args[]){
SendMail objSendMail= new SendMail();
objSendMail.startInfiniteLoop();
}
public void startInfiniteLoop() {
for(;;) {
SleepThread.sleep(1000);
OracleBakThread = new Thread(this);
OracleBakThread.start();}
}
public void getBackupFun() {
dbConnectionFactory objdbConnectionFactory = new dbConnectionFactory();
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.port", "465");
query = "check if database is false";
while (rs.next()) {
// If database is true, Send mail, Update database
}
}
public void run() {
int minute=0;
Calendar calender = Calendar.getInstance();
minute=calender.get(Calendar.MINUTE);
if (minute==25) {
getBackupFun();
}
}
}
そして、私のデータベースは無限ループでスレッドを開始してデータベースを更新するとどうなりますか?
id b_status
1 false
2 false
3 false
であると仮定だから私の質問は、私が作成するたびに新しいスレッド私のrunメソッドが行を更新します、です。しかし、このスレッドの作成は無限ループの中にあるので、私の更新はどのように機能しますか?
データベースの更新は継続されますか?
または、最初のスレッドが最初の行を更新し、2番目が2番目に更新されますか?
私のメインJavaコードでは、このようなコードを使用しています:while(true){SleepThread.sleep(1000); OracleBakThread =新しいスレッド(これ)。 OracleBakThread.start();}と私のプログラムは正常に動作しています。私はここで、theradがデータベース全体を更新するか、複数のスレッドが行うかどうか、どのように動作するかを理解するために来ましたか? –
したがって、更新が必要な最大時間は1秒と仮定しなければなりません。これはあなたのために働くかもしれませんが、確かに良いプログラミングスタイルはありません、なぜあなたは自分のスレッドのすべての行を更新したいのですか? – FatTony
実際には、そのプロセスでメールを送信しています。データベースがfalseの場合はメールを送信し、データベースを更新します。論理的には何が起こるのでしょうか?私はtheradが1つの行を更新するかどうか、もう1つは別の行を更新するかどうかはわかりません。私はそれを明確にするためにここにいます。 –