一个简单的Runnable

书接上篇一个简单的Thread

首先是一个任务类,这里做具体的业务逻辑,需要什么参数通过构造方法引入

package com.example.demo.threadPool;

public class TestRunable implements Runnable {
    @Override
    public void run() {
        System.out.println("子线程开始");
        try{
            // 子线程休眠五秒
            Thread.sleep(5000);
        }
        catch (InterruptedException e){
            e.printStackTrace();
        }
        System.out.println("子线程结束");
    }
}

调用任务类发起请求,实现主线程无需等待子线程执行结束

    @Test
    void a2() throws Exception {
        long l = System.currentTimeMillis();
        TestRunable testRunable = new TestRunable();
        Thread thread = new Thread(testRunable);
        thread.start();
        System.out.println("主线程执行时长:"+String.valueOf(System.currentTimeMillis()-l));
    }

调用任务类发起请求,实现主线程等待子线程执行结束

    @Test
    void a2() throws Exception {
        long l = System.currentTimeMillis();
        TestRunable testRunable = new TestRunable();
        Thread thread = new Thread(testRunable);
        thread.start();
        thread.join();
        System.out.println("主线程执行时长:"+String.valueOf(System.currentTimeMillis()-l));
    }

其实质跟thread模式创建一样

`Runnable` 是一个接口,它定义了一个没有参数和返回值的 `run()` 方法。在 Java 中,多线程的实现通常有两种方式:继承 `Thread` 类和实现 `Runnable` 接口。其中,实现 `Runnable` 接口是一种更加灵活的方式,因为它可以支持多重继承,而且能够避免单继承的局限性。 当一个类实现了 `Runnable` 接口,就必须实现 `run()` 方法。这个方法用于定义线程的执行逻辑。当线程启动时,`run()` 方法会被自动调用。因此,我们可以在这个方法中编多线程的业务逻辑。 例如,下面的代码演示了如何使用 `Runnable` 接口创建一个简单的线程: ``` public class MyRunnable implements Runnable { @Override public void run() { System.out.println("Hello, Runnable!"); } } public class Test { public static void main(String[] args) { Runnable task = new MyRunnable(); Thread thread = new Thread(task); thread.start(); } } ``` 在上面的代码中,我们定义了一个 `MyRunnable` 类,它实现了 `Runnable` 接口,并且重了 `run()` 方法。然后在 `main` 方法中,我们创建了一个 `MyRunnable` 类的实例,并将它作为参数传递给 `Thread` 类的构造方法中。最后调用线程的 `start()` 方法,就可以启动这个线程并执行 `MyRunnable` 类中的 `run()` 方法。 需要注意的是,使用 `Runnable` 接口创建线程时,我们需要将 `Runnable` 对象作为参数传递给 `Thread` 类的构造方法中,并且调用的是 `Thread` 类的 `start()` 方法,而不是 `run()` 方法。因为调用 `start()` 方法会启动一个新的线程,并自动调用 `run()` 方法,而直接调用 `run()` 方法只会在当前线程中执行这个方法,不会启动新的线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值