微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在java中同时运行两个线程

我用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,则应该看到它们都与隔行扫描输出同时运行.

原文地址:https://www.jb51.cc/java/121497.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐