我有这个计时器方法:
public void setTimer(int seconds, String userName, String content) {
Timer timer = new Timer();
timer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
setTweet(userName, content);
System.out.println("tweet posteado cada 5 segs");
}
}, 0, (seconds*1000));
}
变量“content”由数组列表定义。如何启动计时器,遍历数组列表并在完成后停止计时器?
编辑:添加数组列表:
public ArrayList<String> readSelectedExcel(File path){
ArrayList<String> tweetsArray = new ArrayList<>();
try{
FileInputStream fileInputStream = new FileInputStream(path);
XSSFWorkbook wb = new XSSFWorkbook(fileInputStream);
XSSFSheet sheet = wb.getSheetAt(0);
sheet = wb.getSheetAt(0);
for (Row myrow : sheet) {
for (Cell mycell : myrow) {
tweetsArray.add(mycell.getStringCellValue());
}
}
}catch (FileNotFoundException te) {
te.printStackTrace();
System.out.println("Accounts.xlsx Not Found");
} catch (IOException e) {
e.printStackTrace();
}
return tweetsArray;
}
最佳答案
您可以使用schedule(TimerTask task, long delay)而不是 scheduleAtFixedRate(TimerTask 任务,长延迟,长周期)
。
这是一个例子:
int seconds = 1;
for(int i = 0; i < list.size(); i++){
setTimer(seconds * i, userName,list.get(i));
}
public void setTimer(int seconds, final String userName, final String content) {
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
setTweet(userName, content);
System.out.println("tweet posteado cada 5 segs");
}
}, (seconds*1000));
}
关于java - 如何在 Timer 完成数组列表迭代后停止 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36510970/