创建线程的6种方式,用Lambda表达式你绝对没用过

整理不易求关注[送心]

通过继承 Thread 类

继承Thread类,重新run方法

public class Test extends Thread { @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { Test test1 = new Test(); Test test2 = new Test(); test1.start(); test2.start(); }}

通过实现 Runnable 接口

实现Runnable接口,重写run方法

public class Test implements Runnable { @Override public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String[] args) { Thread thread1 = new Thread(new Test()); Thread thread2 = new Thread(new Test()); thread1.start(); thread2.start(); }}

通过实现 Callable 接口

通过实现Callable接口,重写call方法,配合FutureTask,可以得到异步执行的结果。

public class Test implements Callable { @Override public Object call() throws Exception { return Thread.currentThread().getName(); } public static void main(String[] args) throws ExecutionException, InterruptedException { FutureTask futureTask = new FutureTask(new Test()); Thread thread = new Thread(futureTask,”线程名称”); thread.start(); // 得到异步执行结果 System.out.println(futureTask.get()); }}

通过Lambda表达式方式

直接使用Lambda表达式方式创建多线程,不需要继承或者实现类。(看起来很酷[绿帽子])

public class Test { public static void main(String[] args) { Runnable runnable = () -> { System.out.println(Thread.currentThread().getName()); }; new Thread(runnable).start(); }}

通过内部类方式

public class Test { public static void main(String[] args) { // 1. new Thread() { @Override public void run() { System.out.println(Thread.currentThread().getName()); } }.start(); // 2. new Thread(new Runnable() { @Override public void run() { System.out.println(Thread.currentThread().getName()); } }).start(); // 3. new Thread(()->{ System.out.println(Thread.currentThread().getName()); }).start(); }}

通过线程池方式

提供四种创建线程池的方式:

  • 定长线程池
  • 缓存线程池
  • 单线程池
  • 调度线程池

public class Test { public static void main(String[] args) { // 定长线程池,固定线程总数 ExecutorService executorService1 = Executors.newFixedThreadPool(10); // 可缓存线程池,无限大,如果线程池没有可用线程就会自动创建,有的话就自动利用起来 ExecutorService executorService2 = Executors.newCachedThreadPool(); // 单线程池 ExecutorService executorService3 = Executors.newSingleThreadExecutor(); // 调度线程池 ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10); }}

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年6月22日
下一篇 2022年6月22日

相关推荐

  • Chrome OS 103发布:重点改善Chromebook和Android的连接

    在过去 1 年时间里,Google 一直致力于开发新的 Android 和 Chromebook 功能,从而更好地弥合手机和笔记本电脑之间的差距。在今天发布的 Chrome OS …

    2022年6月25日
  • 清风灵动—分形工艺 Fractal Design Pop Air 机箱装机展示

    分形工艺Fractal Design作为老牌的机电厂商,在近期推出全新Pop系列机箱,除去标准版Pop Air,还包含了Pop XL,Mini共三个型号,提供了多种内核色彩可供选择…

    2022年7月1日
  • 跟老韩学Ubuntu Server 2204-设置vim缩进

    跟老韩学Linux SRE系列 使用vim当做编辑器的过程中,vim默认缩进为8个空格,一般情况下我们使用vim编写C或者Shell以及Python代码时,常常使用4个空格作为一个…

    2022年7月11日
  • MySql查询语句是如何执行的

    1.连接服务器 通过TCP连接,默认端口3306 2.查询缓存,如果匹配,则返回结果,否则继续下一步 3.解析器Parser进行解析,包括词法解析和语法解析 4.进行预处理,优化器…

    2022年7月15日
  • 每日一练进击大厂「DAY7」并发编程4

    文章目录 一、有三个线程T1,T2,T3如何保证顺序执行 二、AQS 三、CountDownLatch 四、CyclicBarrier 五、Semaphore 六、自旋锁 七、偏向…

    2022年7月9日
  • 保卫萝卜4阿波画室颜料获得方法

    阿波画室是保卫萝卜4近期即将上线的七夕活动,很多玩家都想要知道保卫萝卜4阿波画室颜料怎么获得,小编为大家带来保卫萝卜4阿波画室颜料获得方法。 保卫萝卜4阿波画室颜料获得方法 1.活…

    2022年8月3日
  • ThinkPad 迎 30 周年,全新 Z13/16 型号日本发布

    IT之家 6 月 24 日消息,据日媒 PC Watch 报道,联想 ThinkPad 在日本举行新品发布会,推出了全新 Z13/16 型号。 据报道,ThinkPad 在 202…

    2022年6月25日
  • 5个错误养生观念

    1、吃素最健康 很多老年人长期坚持吃素,他们觉得吃素会更加健康,更有利于长寿。其实不管是吃素还是吃荤,只要合理搭配能够满足人体日常所需的营养,就是健康的饮食。有些人听信了这种谣言,…

    2022年9月10日
  • 增加自信的方法(纯干货,无图)

    第一步 正确地看待自己 说到正确地看待自己,很不幸地,在我们的社会里面真的有太多人,一直用错误的方式来看待自己,因此当然没有自信,也活得不快乐。 许多人在与其他人接触的时候,不断看…

    2022年8月4日
  • 丰富自己的3件事:去靠近、去努力、去经历

    原创更新99篇 你拥有记住:唯有热爱,才可以岁月漫长 (我愿意做一个“笨拙”的人,我愿意持续做一个“笨拙”的人,找一件难而正确的事情,下日日不断之功,成为长期主义者———Pete老…

    2022年8月4日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息