个性化阅读
专注于IT技术分析

如何通过多个线程执行单个任务?

如果必须由多个线程执行单个任务, 则只有一个run()方法, 例如:

由多个线程执行单个任务的程序

class TestMultitasking1 extends Thread{
 public void run(){
   System.out.println("task one");
 }
 public static void main(String args[]){
  TestMultitasking1 t1=new TestMultitasking1();
  TestMultitasking1 t2=new TestMultitasking1();
  TestMultitasking1 t3=new TestMultitasking1();

  t1.start();
  t2.start();
  t3.start();
 }
}

立即测试

Output:task one
       task one
       task one

由多个线程执行单个任务的程序

class TestMultitasking2 implements Runnable{
public void run(){
System.out.println("task one");
}

public static void main(String args[]){
Thread t1 =new Thread(new TestMultitasking2());//passing annonymous object of TestMultitasking2 class
Thread t2 =new Thread(new TestMultitasking2());

t1.start();
t2.start();

 }
}

立即测试

Output:task one
       task one

注意:每个线程在单独的调用堆栈中运行。

多线程堆栈

如何通过多个线程执行多个任务(多线程中的多任务)?

如果必须通过多个线程执行多个任务, 请使用多个run()方法, 例如:

由两个线程执行两个任务的程序

class Simple1 extends Thread{
 public void run(){
   System.out.println("task one");
 }
}

class Simple2 extends Thread{
 public void run(){
   System.out.println("task two");
 }
}

 class TestMultitasking3{
 public static void main(String args[]){
  Simple1 t1=new Simple1();
  Simple2 t2=new Simple2();

  t1.start();
  t2.start();
 }
}

立即测试

Output:task one
       task two

与上述相同的示例, 其匿名类扩展了Thread类:

由两个线程执行两个任务的程序

class TestMultitasking4{
 public static void main(String args[]){
  Thread t1=new Thread(){
    public void run(){
      System.out.println("task one");
    }
  };
  Thread t2=new Thread(){
    public void run(){
      System.out.println("task two");
    }
  };


  t1.start();
  t2.start();
 }
}

立即测试

Output:task one
       task two

与上述相同的示例, 其匿名类实现了Runnable接口:

由两个线程执行两个任务的程序

class TestMultitasking5{
 public static void main(String args[]){
  Runnable r1=new Runnable(){
    public void run(){
      System.out.println("task one");
    }
  };

  Runnable r2=new Runnable(){
    public void run(){
      System.out.println("task two");
    }
  };
    
  Thread t1=new Thread(r1);
  Thread t2=new Thread(r2);

  t1.start();
  t2.start();
 }
}

立即测试

Output:task one
       task two
赞(0)
未经允许不得转载:srcmini » 如何通过多个线程执行单个任务?

评论 抢沙发

评论前必须登录!