慕课网笔记-多线程中Thread和Runnable的区别

来源:互联网 发布:协同过滤算法cf 编辑:程序博客网 时间:2024/05/17 01:43

一般来说建立新线程有两种方法:继承Thread类或者实现Runnable接口。那么这两种实现方式各有什么优缺点呢?

1.Runnable方式可以避免采用Thread方式由于Java单继承特性带来的缺陷。如果继承了Thread类,就不能再继承别的类了,而接口是可以实现多个的。


2.Runnable的代码可以被多个线程共享,可以多个线程处理同一资源。


下面是模拟火车站卖票的例子:

class MyRunnable implements Runnable {private int ticketCount = 7;  //剩余票数@Overridepublic void run() {while(ticketCount > 0) {ticketCount--;System.out.println(Thread.currentThread().getName() + "卖出一张票,剩余" + ticketCount + "张");}}}


在main方法中调用:

public class Main {public static void main(String[] args) {System.out.println("111");MyRunnable mr = new MyRunnable();Thread mt1 = new Thread(mr);Thread mt2 = new Thread(mr);Thread mt3 = new Thread(mr);mt1.start();mt2.start();mt3.start();}}


可以发现,ticketCount是被各个线程共享的。而如果使用继承Thread,那么新建的各个线程之间的数据是独立的。


0 0
原创粉丝点击