Thread和Runnable浅析

Thread和Runnable是java实现多线程的两种方式,前者需要继承,后者需要实现接口。

线程:线程是进程上的一种划分,是进程的执行单元。

进程:是具有一定独立功能,处于运行过程中的程序。一般而言,进程包括三大特征:独立性、并发性和动态性。


下面来分析Thread和Runnable的区别:

1、Thread是要实现类继承的:

public class ThreadTest extends Thread
Runnable接口要实现:

public RunnableTest implements Runnable

2、Thread:要启动一个人线程,直接调用start()方法即可;

       Runnable:要启动一下线程,可以如下:

之后调用start()即可。


3、Thread也是实现了Runnable接口的:


4、继承Thread多个线程之间不能实现资源的共享,而实现了Runnable接口之后,可以实现多个线程之间的资源共享。

下面以买票为例:

class Demo extends Thread{
	//总共票数为10
	private int ticket = 10;
	
	public void run(){
		while(ticket>0){
			System.out.println("卖票"+":"+ticket--);
		}
	}
}

public class ThreadDemo03{
	public static void main(String[] args){
		//下面是模拟四个售票点
		Demo person1 = new Demo();
		Demo person2 = new Demo();
		Demo person3 = new Demo();
		Demo person4 = new Demo();
		
		person1.start();
		person2.start();
		person3.start();
		person4.start();
	}
}

输出结果为:



class Demo implements Runnable{
	//总共票数为10
	private int ticket = 10;
	
	public void run(){
		while(ticket>0){
			System.out.println("卖票"+":"+ticket--);
		}
	}
}

public class ThreadDemo04{
	public static void main(String[] args){
		//同一资源
		Demo demo = new Demo();
		//四个售票点,控制同一资源
		new Thread(demo).start();
		new Thread(demo).start();
		new Thread(demo).start();
		new Thread(demo).start();
	}
}

输出结果为:



分析上面的结果:Thread的同一张票被多人买走,这在实际情况中是不可能发生的。而Runnable接口,输出的结果正是我们需要的。


综上所述,我们可以看出,实现Runnable接口适合处理多个线程访问同一资源的情况,可以避免由于java单继承特性带来的额局限,有利于程序的健壮性,代码能够被多个线程共享。因此,大多数情况下,建议使用Runnable接口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值