如何定义一个循环,每秒循环一次
写一个监听类,想要实现类似的功能,求思路
[解决办法]
可以用多线程的方法。在一个线程里面实现一个循环 设置这个县城Thread.sleep(1000)来实现。但是多线程里面的线程机制调用的确定性 没深入研究。还有个定时器类 Timer 可以实现这个类是显示的
[解决办法]
package com.zf.qzuarz;
import java.util.concurrent.TimeUnit;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
public class HelloJob implements Job {
public void execute(JobExecutionContext context)
throws JobExecutionException {
try {
System.out.println("execute start ....");
TimeUnit.SECONDS.sleep(3);//睡眠3s
System.out.println("execute end ....");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
package com.zf.qzuarz;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
public class SimpleExample {
public void run() throws Exception {
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
JobDetail job = JobBuilder.newJob(HelloJob.class)
.withIdentity("job1", "group1")
.build();
CronTrigger trigger = TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1")
.withSchedule(CronScheduleBuilder.cronSchedule("0/1 * * * * ?"))
.build();
sched.scheduleJob(job, trigger);
sched.start();
}
public static void main(String[] args) throws Exception {
SimpleExample example = new SimpleExample();
example.run();
}
}
package com.study.task;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class TimerTest {
public static void main(String[] args) {
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
Thread.currentThread().setName("循环发现线程");
System.out.println("hello world!");
}
};
timer.schedule(task, new Date(), 1000);
}
}