1 实现Runnable接口
public class MyThread01 implements Runnable {
private int n = 10; //定义10个包子
@Override
public void run() {
while(n>0){
System.out.println(Thread.currentThread().getName()+"还有"+n+"个包子");
n--;
}
}
public static void main(String[] args) {
MyThread01 myThread = new MyThread01();
Thread t1 = new Thread(myThread,"线程A");
Thread t2 = new Thread(myThread,"线程B");
t1.start();
t2.start();
}
}
2 继承Thread类
public class MyThread02 extends Thread{
private int n = 10; //定义10个包子
private String name; //线程名
public MyThread02(String name) {
super();
this.name = name;
}
@Override
public void run() {
while(n>0){
System.out.println(this.name+"还有"+n+"个包子");
n--;
}
}
public static void main(String[] args) {
MyThread02 t1 = new MyThread02("线程A");
MyThread02 t2 = new MyThread02("线程B");
t1.start();
t2.start();
}
}
运行结果:
①线程B还有10个包子
线程B还有9个包子
线程A还有10个包子
线程B还有8个包子
线程B还有6个包子
线程B还有5个包子
线程B还有4个包子
线程B还有3个包子
线程A还有7个包子
线程B还有2个包子
线程A还有1个包子
②线程A还有10个包子
线程A还有9个包子
线程A还有8个包子
线程B还有10个包子
线程B还有9个包子
线程A还有7个包子
线程A还有6个包子
线程A还有5个包子
线程A还有4个包子
线程A还有3个包子
线程A还有2个包子
线程A还有1个包子
线程B还有8个包子
线程B还有7个包子
线程B还有6个包子
线程B还有5个包子
线程B还有4个包子
线程B还有3个包子
线程B还有2个包子
线程B还有1个包子
区别: 实现Runnable接口线程共享10个包子,继承Thread类的的线程不共享包子,一共输出了20个包子。