1、实现 Runnable 接口:
public class ShiXian implements Runnable {
private String name;
public ShiXian(String name){
this.name = name;
}
@Override
public void run(){ //这里就是处理业务逻辑的地方啦。
for(int i=0; i<5; i++){
System.out.println("大爷 "+ this.name+ " run.");
}
}
}
然后在其他地方只要创建新线程,并把ShiXian 实例传进去就可用了:
public class Main {
public static void main(String[] args) {
new Thread(new ShiXian("A")).start();
new Thread(new ShiXian("B")).start();
new Thread(new ShiXian("C")).start();
}
}
以上与以下是一样的:
public class Main {
public static void main(String[] args) {
ShiXian s1 = new ShiXian("A"); //实例
ShiXian s2 = new ShiXian("B");
ShiXian s3 = new ShiXian("C");
Thread t1 = new Thread(s1); //创建线程,并把实例传进去
Thread t2 = new Thread(s2);
Thread t3 = new Thread(s3);
t1.start();//开启线程
t2.start();
t3.start();
}
}
结果:
大爷 A run.
大爷 C run.
大爷 C run.
大爷 C run.
大爷 C run.
大爷 C run.
大爷 B run.
大爷 B run.
大爷 B run.
大爷 A run.
大爷 A run.
大爷 A run.
大爷 A run.
大爷 B run.
大爷 B run.
2、继承 Thread 类:
public class ShiXian extends Thread{
private String name;
public ShiXian(String name){
this.name = name;
}
@Override
public void run(){
for(int i=0; i<5; i++){
System.out.println("大爷 "+ this.name+ " run.");
}
}
}
//运行起来
public class Main {
public static void main(String[] args) {
new ShiXian("A").start();//继承Thread 类,每一个实例都是Thread。
new ShiXian("B").start();
new ShiXian("C").start();
}
}
结果:
大爷 A run.
大爷 C run.
大爷 B run.
大爷 C run.
大爷 A run.
大爷 C run.
大爷 B run.
大爷 C run.
大爷 A run.
大爷 C run.
大爷 B run.
大爷 B run.
大爷 A run.
大爷 B run.
大爷 A run.
结论:
1、强烈推荐方法一,因为实现接口的方式比继承类的方式更灵活,也能减少程序之间的耦合度,面向接口编程也是设计模式6大原则的核心。