继承了Thread 实例变量就不能共享了??

来源:百度知道 编辑:UC知道 时间:2024/09/21 18:33:12
继承了Thread就看不到多线程中实例变量共享的效果了,请帮忙解释,Thanks.

这个例看不到实例变量共享的效果

class A extends Thread{
private int i = 0;
public void run() {
System.out.println(Thread.currentThread().getName()+"-->"+i++);
}
}

public class Test {
public static void main(String[] args){
A t1=new A();
A t2=new A();
t1.start();
t2.start();
try {
Thread.sleep(500);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

这个实现Runnable接口可以实例变量可以共享

public class Test {
public static void main(String[] args){
Runnable r1 = new A();
Thread t1 = new Thread(r1,"t1");
Thread t2 = new Thread(r1,"t2");
t1.start();
t2.start();
}
}

class A implements Runnable{
private int i = 0;
public void run() {
System.out.print

这正是两种多线程方法的典型区别之一啊

A t1=new A();
A t2=new A();
你的A类产生了两个实例化对象 自然就有两个不同的i值了


Runnable r1 = new A();
Thread t1 = new Thread(r1,"t1");
Thread t2 = new Thread(r1,"t2");

中 r1只有一个 于是i也只有一个 只不过有两个Thread 类的对象而已

囧 servelt那块我还没学呢。。。

runnable是接口
Thread是类

runnable接口出现是因为JAVA的单继承原因
如果继承了Thread类 ,就不能再继承其他类 此时想继承其他类就只能实现runnable来代替Thread的继承