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
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
相关文章推荐
- Java 多线程实现接口Runnable和继承Thread区别
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- Java学习从菜鸟变大鸟之三 多线程中Thread 和Runnable的区别与运用
- Java 多线程实现接口Runnable和继承Thread区别
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- Java中 Thread和Runnable实现多线程的区别和联系
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- 多线程二,Java多线程thread和runnable区别简介
- Java 多线程:Thread 和 Runnable 区别
- java中多线程Runnable接口和Thread类的区别
- java挑战高并发(6):Runnable和Thread实现多线程的区别(含代码)
- Java 多线程实现接口Runnable和继承Thread区别
- Java多线程(四) Thread和Runnable之区别(售票系统)
- JAVA基础(多线程Thread和Runnable的使用区别(转载)
- 【Java并发编程】Runnable和Thread实现多线程的区别
- 多线程——Java中继承Thread类与实现Runnable接口的区别
- Java 并发编程之Runnable和Thread实现多线程的区别
- Java中两种多线程实现方法:Thread类和Runnable接口的联系与区别
- Java多线程实现接口Runnable和继承Thread区别(建议使用Runnable)