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方法都会更新一行。但是由于这个线程创建在无限循环内,我的更新将如何工作?
它会继续更新我的数据库吗?
或者,第一个线程将更新第一行,第二个线程将更新第二个?
答案 0 :(得分:0)
但是由于这个线程创建在无限循环中,我的如何 更新工作?
这取决于您的更新逻辑,为此需要run()
内的代码。
此错误也会导致错误,因为无限循环将继续创建新的Tread,尽管甚至可能没有完成。
答案 1 :(得分:0)
为什么重新发明轮子?使用Quartz库。 请参阅其他主题中的my answer。