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类,你必须为每一个线程创建不同的实例。因此每个类的实例分配了不同的内存空间,每一个有不同的资源,它们的值相同。因为没有一个对象的引用是相同的。
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类,你必须为每一个线程创建不同的实例。因此每个类的实例分配了不同的内存空间,每一个有不同的资源,它们的值相同。因为没有一个对象的引用是相同的。
相关文章推荐
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别 创建多线程的比较
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- Java中extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- extends Thread 与 implements Runnable 的区别
- implements和extends的区别 延伸到Thread和runable的区别
- Java 多线程:extends Thread Class & implements Runnable Interface
- 线程的两种玩法:extends Thread和implements Runnable
- Java多线程extends Thread和implements Runnable
- Thread(需求:简单卖票程序 extends Thread;implements Runnable)
- "implements Runnable"与"extends Thread"
- Java两种实现多线程方式的比较( implements Runnable 与 extends Thread )
- java多线程Thread与Runnable的区别与使用深入理解
- Thread和Runnable一些区别以及线程的同步