您的位置:首页 > 编程语言 > Java开发

java 多线程Thread与Runnable的区别

2017-07-20 11:56 363 查看
1.Runnable适合多线程操作同一资源。

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

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

测试:

package main.uitls;

public class Demo {
public static void 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{
public int num = 5;
public void run() {
for(int i=100;i > 0;i--){
if(num>0){
System.out.println("当前剩余票数:"+num--);
}
}
}
}

class MyRunnable implements Runnable{
public int num = 5;
public void run() {
for(int i=100;i > 0;i--){
if(num>0){
System.out.println("当前剩余票数:"+num--);
}
}
}
}当使用Thread时,多个线程之间数据没有共享,返回的结果为(每次运行结果可能不同)
当前剩余票数:5
当前剩余票数:4
当前剩余票数:3
当前剩余票数:5
当前剩余票数:2
当前剩余票数:5
当前剩余票数:1
当前剩余票数:4
当前剩余票数:3
当前剩余票数:2
当前剩余票数:4
当前剩余票数:1
当前剩余票数:3
当前剩余票数:2
当前剩余票数:1当使用Runnable时县城之间数据共享:
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();结果为:
当前剩余票数:5
当前剩余票数:3
当前剩余票数:4
当前剩余票数:1
当前剩余票数:2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: