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
可以看出上面的三个线程共享资源。