我用timertask来安排我的
java程序.现在当timertask的run方法正在进行时,我想运行两个同时运行并执行不同功能的线程.这是我的代码..请帮帮我..
import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util.TimerTask; public class timercheck extends TimerTask{ // my first thread Thread t1 = new Thread(){ public void run(){ for(int i = 1;i <= 10;i++) { System.out.println(i); } } }; // my second thread Thread t2 = new Thread(){ public void run(){ for(int i = 11;i <= 20;i++) { System.out.println(i); } } }; public static void main(String[] args){ long ONCE_PER_DAY = 1000*60*60*24; Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY,12); calendar.set(Calendar.MINUTE,05); calendar.set(Calendar.SECOND,00); Date time = calendar.getTime(); TimerTask check = new timercheck(); Timer timer = new Timer(); timer.scheduleAtFixedrate(check,time,ONCE_PER_DAY); } @Override // run method of timer task public void run() { t1.start(); t2.start(); } }
解决方法
我认为你的线程在“相同”的时间运行.但是由于竞争条件,第一个线程只是在第二个线程之前将其输出排队.你不会从thread-1看到一行,然后从thread-2看到1行.根据线程调度,您将看到一个块然后另一个块.
如果将输出量从10行增加到(例如)1000,则应该看到它们都与隔行扫描输出同时运行.