注册 登录
编程论坛 JAVA论坛

关于多线程的两种实现方式

疯狂的小a 发布于 2018-05-20 10:26, 2446 次点击
Java天生支持多线程,但是多线程操作起来有点复杂,平时又用得也不多。多线程能有效的提高程序运行的效率,提高CPU的利用率,但是多线程使用不当又会造成一系列的问题,比如程序死锁等。现在整理两种基本的多线程实现方式如下:
方式一:继承Thread类,重写run方法
程序代码:
package com.xiaoa.thread;

public class MyThread extends Thread {
    @Override
    public void run() {
        super.run();
        System.out.println("MyThread.run()");
    }
}

方式二:实现Runnable接口,重写run方法
程序代码:
package com.xiaoa.thread;

public class MyRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println("MyRunnable.run()");
    }

}

测试代码:
package com.xiaoa.test;

import com.xiaoa.thread.MyRunnable;
import com.xiaoa.thread.MyThread;

public class Test {
    public static void main(String[] args) throws Exception {
        MyThread th1 = new MyThread();
        th1.start();
        
        th1.sleep(100l);
        
        System.out.println("--------------------------");
        
        Thread.currentThread().sleep(100l);
        
        MyRunnable th = new MyRunnable();
        Thread th2 = new Thread(th);
        th2.start();
        
        
    }
}
测试结果:
MyThread.run()
--------------------------
MyRunnable.run()

5 回复
#2
a3510218172018-05-24 20:08
实际中大多用Runnable接口来实现,这个最大的好处是可以继承其他类。
#3
疯狂的小a2018-05-30 10:10
回复 3楼 saiens
能详细说说吗?
Thread不是也实现了runnable接口吗
#4
壹只小小鸟2018-06-16 18:50
回复 3楼 疯狂的小a
java是单继承的,所以用第一种方法有局限性.就是说这个类继承了Thread类就不能再继承其他类了.实现了runnable接口还能继承其他类.
#5
疯狂的小a2018-06-16 21:27
回复 4楼 壹只小小鸟
所以都是继承类和实现接口,有什么区别吗
#6
one7372021-07-05 20:23
回复 5楼 疯狂的小a
没什么区别,都能用。
看个人习惯了。
1