java中runnable_Java之Runnable表达式的简单介绍

各位小伙伴们大家好,这次小编要介绍的是Runnable表达式

当我们要启动一个线程去完成任务的时候,通常的做法会通过java.lang.Runnable接口来定义任务内容,并使用java.lang.Thread类来启动线程,代码如下:

/*创建Runnable接口的实现类,重写run方法,设置线程任务*/

public class RunnableImpl implements Runnable{

public void run() {

System.out.println(Thread.currentThread().getName()+"创建一个线程Run");

}

}

8b01c34b2801abd2ecc40cbe3a188d57.png

main方法

/*使用实现Runnable接口的方式实现多线程*/

public class Demo01Runnable {

public static void main(String[] args) {

//创建Runnable接口的实现类对象

RunnableImpl run=new RunnableImpl();

//创建Thread类对象,构造方法中传递Runnable接口的类

Thread t=new Thread(run);

//调用start方法开启多线程,执行run方法

t.start();

6e012e528212f2d92d7dc962159ff655.png

//简化代码,使用匿名内部类,实现多线程程序

Runnable e=new Runnable() {

public void run() {

System.out.println(Thread.currentThread().getName()+"创建一个线程Run");

}

};

new Thread(e).start();

//继续简化代码

new Thread(new Runnable() {

public void run() {

System.out.println(Thread.currentThread().getName()+"创建一个线程Run");

}

}).start();

}

}

0273a5da40b01afb86104f1b4c518c7e.png

在上面的代码中,对于Runnable的匿名内部类用法,其实有很多不必要的代码,这些代码是可以省略的。

Thread类需要Runnable接口作为参数,其中的抽象run方法时可以用来指定线程任务内容的核心;为了指定run方法,不得不需要Runnable接口的实现类;为了省去定义一个RunnableImpl实现类的麻烦,不得不使用匿名了内部类。之后必须覆盖抽象run方法,方法名称,方法参数,方法返回值不得不再写完一遍,而且不能写错,其实方法体才是关键。

我们可以用编程思想,来解决上面启动线程时代码的冗余问题,在上面的代码中主要的问题是:将run方法体内的代码传递给Thread类知晓(传递一段代码——才是我们真正的目的)。

我们可以使用Lambda表达式,实现这种实现,简化代码:

public class Demo02Lambda {

public static void main(String args[]) {

//使用Runnable表达式,实现多线程

new Thread(()->{

System.out.println(Thread.currentThread().getName()+"新建线程");

}

).start();

}

}

关于Runnable表达式,主要是运用一种函数式编程实现,直面主要问题,然后解决问题,去除一些不必要的代码,所以比小编之间讲的创建多线程的几种方法要简单。之前小编讲的用匿名内部内等方法来创建多线程Java之匿名内部类方式实现多线程的创建Java之创建多线程的第一种方式,thread类。这几种方法可能更偏向于面向对象方法,处理一个问题,找一个能解决这个问题的方法,调用这个对象。小编就先说到这里,希望这篇文章可以帮到大家,也欢迎各位小伙伴补充和纠错。

图片来自网络,如有侵权,请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值