您的位置:首页 > 其它

implements Runnable与extends Thread 的区别

2017-10-13 23:20 369 查看
分别写了两种方式的线程,代码如下

public class Threadaaa {

public static void main(String args[]) throws Exception {
// 多线程共享一个对象
ImplementsRunnable rc = new ImplementsRunnable();
Thread t1 = new Thread(rc);
t1.start();
Thread.sleep(2000); // 在开启下个线程前先等待2秒
Thread t2 = new Thread(rc);
t2.start();
Thread.sleep(2000); // 在开启下个线程前先等待2秒
Thread t3 = new Thread(rc);
t3.start();
Thread.sleep(2000); // 在开启下个线程前先等待2秒
Thread t4 = new Thread(rc);
Thread.sleep(2000); // 在开启下个线程前先等待2秒
t4.start();
// 为每一个线程创造新的实例
ExtendsThread tc1 = new ExtendsThread();
tc1.start();
Thread.sleep(2000); // 在开启下个线程前先等待2秒
ExtendsThread tc2 = new ExtendsThread();
tc2.start();
Thread.sleep(2000); // 在开启下个线程前先等待2秒
ExtendsThread tc3 = new ExtendsThread();
tc3.start();
Thread.sleep(2000); // 在开启下个线程前先等待2秒
ExtendsThread tc4 = new ExtendsThread();
tc4.start();
}
}

class ImplementsRunnable implements Runnable {

private int counter = 4;

public void run() {
counter--;
System.out.println("ImplementsRunnable : Counter : " + counter);
}
}

class ExtendsThread extends Thread {

private int counter = 4;

public void run() {
counter--;
System.out.println("ExtendsThread : Counter : " + counter);
}
}

运行结果如下:
ImplementsRunnable : Counter : 3
ImplementsRunnable : Counter : 2
ImplementsRunnable : Counter : 1
ImplementsRunnable : Counter : 0
ExtendsThread : Counter : 3
ExtendsThread : Counter : 3
ExtendsThread : Counter : 3
ExtendsThread : Counter : 3


我分别为两个线程分配了资源为4,实现Runnable这个接口,它可以实现共享资源,每次获取剩下的资源,继续操作,而继承Thread类,你必须为每一个线程创建不同的实例。因此每个类的实例分配了不同的内存空间,每一个有不同的资源,它们的值相同。因为没有一个对象的引用是相同的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: