java 继承thread_java 多线程 继承Thread和实现Runnable的区别

1)继承Thread:

public class ThreadTest extends Thread

{

private int count;

private String name;

public ThreadTest(int count,String name){

this.count = count;

this.name = name;

}

public void run()

{

while(count>0)

{

System.out.println(name+"买票 "+count--);

}

}

public static void main(String []args)

{

ThreadTest t1 = new ThreadTest(10,"1号窗口");

ThreadTest t2 = new ThreadTest(10,"2号窗口");

t1.start();

t2.start();

}

}

运行结果:

1号窗口买票 10

1号窗口买票 9

1号窗口买票 8

2号窗口买票 10

1号窗口买票 7

2号窗口买票 9

1号窗口买票 6

2号窗口买票 8

1号窗口买票 5

2号窗口买票 7

1号窗口买票 4

2号窗口买票 6

1号窗口买票 3

2号窗口买票 5

1号窗口买票 2

2号窗口买票 4

1号窗口买票 1

2号窗口买票 3

2号窗口买票 2

2号窗口买票 1

2)实现Runnable接口

public class hello implements Runnable{

private int ticket=19;

@Override

public void run() {

for(int i=0;i<20;i++){

if(this.ticket >0){

System.out.println(Thread.currentThread().getName()+"正在买票"+this.ticket--);

}

}

}

public static void main(String[] args){

hello h1 = new hello();

new Thread(h1,"3号窗口").start();

new Thread(h1,"1号窗口").start();

new Thread(h1,"2号窗口").start();

}

}

运行结果:

1号窗口正在买票19

2号窗口正在买票18

3号窗口正在买票19

2号窗口正在买票16

1号窗口正在买票17

2号窗口正在买票14

3号窗口正在买票15

2号窗口正在买票12

1号窗口正在买票13

2号窗口正在买票10

3号窗口正在买票11

2号窗口正在买票8

1号窗口正在买票9

2号窗口正在买票6

3号窗口正在买票7

2号窗口正在买票4

1号窗口正在买票5

2号窗口正在买票2

3号窗口正在买票3

1号窗口正在买票1

从上面的运行结果可以看出:继承Thread实现的模式是  定义多个线程,各自完成各自的任务.  实现Runnable实现的模式是  定义多个线程,实现一个任务.

其实在实现一个任务用多个线程来做也可以用继承Thread类来实现只是比较麻烦,一般我们用实现Runnable接口来实现,简洁明了。

大多数情况下,如果只想重写 run() 方法,而不重写其他 Thread 方法,那么应使用 Runnable 接口。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值