七年开发经验告诉你java 多线程Thread与Runnable的区别

1.Runnable适合多线程操作同一资源。

2.Runnable接口可以避免java单继承带来的局限

3.Runnable增强代码健壮性,代码被多个线程共享

测试:

[java] view plain copy

package main.uitls;

publicclass Demo {

publicstaticvoid main(String[] arg0){

Mythread m1 = new Mythread();

Mythread m2 = new Mythread();

Mythread m3 = new Mythread();

m1.start();

m2.start();

m3.start();

/*MyRunnable myRunnable =new MyRunnable();

Thread m1 = new Thread(myRunnable);

Thread m2 = new Thread(myRunnable);

Thread m3 = new Thread(myRunnable);

m1.start();

m2.start();

m3.start();*/

}

}

class Mythread extends Thread{

publicint num = 5;

publicvoid run() {

for(int i=100;i > 0;i--){

if(num>0){

System.out.println("当前剩余票数:"+num--);

}

}

}

}

class MyRunnable implements Runnable{

publicint num = 5;

publicvoid run() {

for(int i=100;i > 0;i--){

if(num>0){

System.out.println("当前剩余票数:"+num--);

}

}

}

}

当使用Thread时,多个线程之间数据没有共享,返回的结果为(每次运行结果可能不同)

[html] view plain copy

当前剩余票数:5

当前剩余票数:4

当前剩余票数:3

当前剩余票数:5

当前剩余票数:2

当前剩余票数:5

当前剩余票数:1

当前剩余票数:4

当前剩余票数:3

当前剩余票数:2

当前剩余票数:4

当前剩余票数:1

当前剩余票数:3

当前剩余票数:2

当前剩余票数:1

当使用Runnable时县城之间数据共享:

[java] view plain copy

MyRunnable myRunnable =new MyRunnable();

Thread m1 = new Thread(myRunnable);

Thread m2 = new Thread(myRunnable);

Thread m3 = new Thread(myRunnable);

m1.start();

m2.start();

m3.start();

结果为:

[html] view plain copy

当前剩余票数:5

当前剩余票数:3

当前剩余票数:4

当前剩余票数:1

当前剩余票数:2

大家可以点击加入群:【Java高级架构进阶群】 里面有Java高级大牛直播讲解知识点 走的就是高端路线,(如果你想跳槽换工作 但是技术又不够 或者工作上遇到了瓶颈 ,我这里有一个JAVA的免费直播课程 ,讲的是高端的知识点基础不好的误入哟,只要你有1-5年的开发经验可以加群找我要课堂链接 注意:是免费的 没有开发经验误入哦)

点击链接加入群聊【Java高级架构进阶群】:群地址

写在最后:欢迎留言讨论,加关注,持续更新!!!

你可能感兴趣的:(七年开发经验告诉你java 多线程Thread与Runnable的区别)