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高级架构进阶群】:群地址
写在最后:欢迎留言讨论,加关注,持续更新!!!