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接口的情况下,可以单继承一个类。
资源共享实例如下:
结果如下:
线程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的资源并不共享。
0
1
2
3
4
5
6
7
8
9
0
0
可以看出上面的三个线程共享资源。
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
可以看出上面的三个线程共享资源。
相关文章推荐
- 【转】java线程系列---Runnable和Thread的区别
- java线程:用thread与runnable实现的区别
- 【Java基础_(线程篇_第一篇)】继承Thread;实现runnable;sleep、wait用法和区别;Thread和Runnable区别;线程停止
- Java线程系列---Runnable和Thread的区别
- java线程(上)Thread和Runnable的区别
- Java中继承thread类与实现Runnable接口的区别(实现线程)
- java线程---Runnable和Thread的区别
- Java 使用线程方式Thread和Runnable,以及Thread与Runnable的区别
- java线程:用thread与runnable实现的区别
- Java中继承Thread和实现Runnable这两种创建线程有何区别
- Java线程之两种方法Runnable和Thread的区别
- Java中继承Thread和实现Runnable这两种创建线程有何区别
- java线程---Runnable和Thread的区别
- [转]java中Thread与Runnable的区别
- JAVA笔记 Runnable 和 Thread 实现方式和继承方式的区别
- Java中Runnable和Thread的区别
- Java中thread类与Runnable接口的区别
- java中Thread与Runnable的区别
- java中的通过继承Thread和实现Runnable接口实现的线程
- Java中thread类与Runnable接口的区别