Java 线程执行多个任务
精华
小牛编辑
131浏览
2023-03-14
1 如何使用多个线程执行一个任务
如果需要由多个线程执行单个任务,则只有一个run()方法,例如:
1.1 多个线程执行一个任务示例1
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* 多个线程执行一个任务
*/
class Demo extends Thread{
public void run(){
System.out.println("task one");
}
public static void main(String args[]){
Demo t1=new Demo();
Demo t2=new Demo();
Demo t3=new Demo();
t1.start();
t2.start();
t3.start();
}
}
输出结果为:
task one
task one
task one
1.2 多个线程执行一个任务示例2
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* 多个线程执行一个任务
*/
class Demo implements Runnable{
public void run(){
System.out.println("task one");
}
public static void main(String args[]){
Thread t1 =new Thread(new Demo());//passing annonymous object of Demo class
Thread t2 =new Thread(new Demo());
t1.start();
t2.start();
}
}
输出结果为:
task one
task one
注意:每个线程在单独的堆栈中运行。
2 如何使用多个线程执行多个任务
如果必须通过多个线程执行多个任务,请使用多个run() 方法:
2.1 多个线程执行多个任务示例1
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* 多个线程执行多个任务
*/
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 Demo{
public static void main(String args[]){
Simple1 t1=new Simple1();
Simple2 t2=new Simple2();
t1.start();
t2.start();
}
}
输出结果为:
task one
task two
2.2 多个线程执行多个任务示例2
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* 多个线程执行多个任务
*/
class Demo{
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();
}
}
输出结果为:
task one
task two
2.3 多个线程执行多个任务示例3
package cn.xnip;
/**
* 小牛知识库网: https://www.xnip.cn
*/
/**
* 多个线程执行多个任务
*/
class Demo{
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();
}
}
输出结果为:
task one
task two