Java多线程实现Runnable接口和继承Thread类区别

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个包子。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值