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

Java 线程 Runnable和Thread的区别

2014-07-10 18:32 435 查看
Java中只有单继承,没有多继承。所以一个类只可以继承一个类。

Java中可以实现多个接口,如果继承了一个继承了多个接口的实现类,则可以获得很多此实现类的方法和此实现类的成员变量。

在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口;Thread类是在java.lang包中定义的。一个类只要继承了Thread类同时覆写了本类中的run()方法就可以实现多线程操作了,但是一个类只能继承一个父类,这是此方法的局限。

在实际开发中一个多线程的操作很少使用Thread类,而是通过Runnable接口完成。

在程序开发中只要是多线程肯定永远以实现Runnable接口为主,因为实现Runnable接口相比继承Thread类有如下好处:

1 资源共享。

2 在实现Runnable接口的情况下,可以单继承一个类。

资源共享实例如下:

public class Thread1 extends Thread {
private int i;
private String name;

public Thread1(String name) {
this.name = name;
}

public void run() {
for (i = 0; i < 10; i++) {
System.out.println(name + " " + i);
}
}

public static void main(String[] args) {
Thread1 t1 = new Thread1("线程1");
Thread1 t2 = new Thread1("线程2");
t1.start();
t2.start();
}
}


结果如下:

线程1 0

线程1 1

线程1 2

线程1 3

线程1 4

线程1 5

线程2 0

线程2 1

线程2 2

线程2 3

线程2 4

线程2 5

线程2 6

线程2 7

线程2 8

线程2 9

线程1 6

线程1 7

线程1 8

线程1 9

可以看出线程1和线程2的资源并不共享。

public class Thread2 implements Runnable {
private int i;

public Thread2() {

}

public void run() {
for (i = 0; i < 10; i++) {
System.out.println(i);
}
}

public static void main(String[] args) {
Thread2 t1 = new Thread2();
new Thread(t1).start();
new Thread(t1).start();
new Thread(t1).start();
}
}


0

1

2

3

4

5

6

7

8

9

0

0

可以看出上面的三个线程共享资源。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  线程