JAVA多线程:Thread、Runnable

JAVA多线程实现方式主要有两种:继承Thread类、实现Runnable接。
第一种方式:继承Thread类
继承Thread类,要重写run();方法,然后通过调用star()启动该线程.

package myself.test.thread;

public class MyThread extends Thread {
    //重写父类中的run()方法
    public void run() {
        for (int i = 0; i < 5; i++) {
            //通过Thread.currentThread().getName()方法可以得到当前执行线程的名称
            System.out.println(Thread.currentThread().getName()+"正在执行第"+i+"次");
        }
    }
    public static void main(String[] args) {
        //创建我们的线程实例对象
        MyThread thread = new MyThread();
        //通过setName()方法来指定线程名称
        thread.setName("继承Thread类的线程");
        //调用start()方法,来启动线程
        thread.start();
    }
}
输出:继承Thread类的线程正在执行第0次
    继承Thread类的线程正在执行第1次
    继承Thread类的线程正在执行第2次
    继承Thread类的线程正在执行第3次
    继承Thread类的线程正在执行第4

查看Thread类源码,我们会发现,它是实现Runnable接口的.
Thread类

第二种方式:实现Runnable接口

    一般情况下,我们创建线程直接继承Thread类就可以,但当我们的类已经继承了其他类的话(java仅支持单继承),只能通过实现Runnable接口来创建线程了.
package myself.test.thread;

public class RunnableTest {
    public static void main(String[] args) {
        //创建我们的线程实例对象
        RunnableImpl impl = new RunnableImpl();
        //通过Thread的构造方法传入我们的线程实例,并指定线程名称
        Thread thread = new Thread(impl,"实现Runnable接口的类");
        //调用Thread类中start()来启动线程
        thread.start();
    }

}

class RunnableImpl extends OtherClass implements Runnable{

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            //通过Thread.currentThread().getName()方法可以得到当前执行线程的名称
            System.out.println(Thread.currentThread().getName()+"正在执行第"+i+"次");
        }
    }
}
输出:实现Runnable接口的类正在执行第0次
    实现Runnable接口的类正在执行第1次
    实现Runnable接口的类正在执行第2次
    实现Runnable接口的类正在执行第3次
    实现Runnable接口的类正在执行第4

启动该线程的时候我们调用的是Thread类中start()方法,查看源码,我们会发现:
这里写图片描述

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值