我是
Java的新手,过去我没有使用过线程.现在,对于我的知识水平,我有一个非常棘手的问题.
我开发了两个功能“发送邮件”和“检查邮件”.每个用户都会注册他的首选项,系统会创建两个目录,其中包含许多定期工作的指令
A)每1500毫秒发送一次消息
B)每1800毫秒发送一次消息
C)每3000毫秒发送一次消息
和
A)每2000毫秒检查一次消息
B)每6000毫秒检查一次消息
C)每8000毫秒检查一次消息
我尝试了多种方法,但我没有做到这一点.
我的问题是哪个是同步它们的最佳方法?下面是我上次使用线程的代码.
public class MailCreatorThread extends Thread {
@Override
public void run() {
CreateMail(_date); //creates a mail with _date as subject
}
}
public class GPSThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
while (!_isTimeToStop) {
try {
while (_servicesToUpdate.size() == 0) {
Thread.sleep(500);
}
_currentService = (MyService) _servicesToUpdate.get(0)
.clone();
_servicesToUpdate.remove(0);
MailCreatorThread mailCreatorThread = new MailCreatorThread();
mailCreatorThread.start();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public class CheckServicesThread extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
while (!_isTimeToStop) {
try {
Thread.sleep(1000);
for (int j = 0; j < _servicesList.length; j++) {
MyService currentService = ((MyService) _servicesList[j]);
if (myService.getTimeToNextUpdate() - 1000 <= 0) {
_servicesToUpdate
.add((MyService) currentService
.clone());
currentService
.setTimeToNextUpdate(currentService
.getUpdatePeriod());
} else {
currentService
.setTimeToNextUpdate(currentService
.getTimeToNextUpdate() - 1000);
}
}
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
stopSelf();
}
}