你真的会创建一个线程吗?

你真的会创建一个线程吗?

在文章开始之前先看一个问题,下图几种创建线程方式分别是什么,它们之间的区别和联系是什么?

你真的会创建一个线程吗?

如果可以轻松回答,那么本文对你来说过于基础,不用往下看啦,如果还有所迷惑,那就和Nauyus一起复习下创建线程的几种方式吧!

如何创建一个线程

Java线程类也是一个Object类,它的实例都继承自java.lang.Thread或其子类。 可以用如下方式用java中创建一个线程:

你真的会创建一个线程吗?

但是这样创建的线程会快速执行结束,因为线程所执行的内容是空的,如果需要线程执行自定义的代码, 有两种方式可以实现,一种是继承Thread类,覆写run方法将线程执行内容放入run方法中,另一种是实现Runable接口,将实现Runable接口的类作为参数传递给Thread类。因为匿名内部类和Java8 Lambda的出现,这两种方式又各有变体,但万变不离其宗,下面我们来看一下。

继承Thread类

第一种方法是继承Thread类,用自定义的run方法覆写父类方法实现传递线程执行代码:

你真的会创建一个线程吗?

继承Thread类——匿名内部类写法

对于那些只需实例化一次的代码如果每次都需要定义一个MyThread也是挺麻烦的,这就有了匿名内部类变体:

你真的会创建一个线程吗?

实现Runable接口

还有一种创建多线程的方法是实现Runable接口,将实现Runable接口的类作为参数传递给Thread类,从而做到传递线程要执行代码的目的:

你真的会创建一个线程吗?

实现Runable接口——匿名内部类

同样,我们可以使用匿名内部类简化代码:

你真的会创建一个线程吗?

实现Runable接口——Lambda表达式

好了到这里代码已经很简化了,但是我们再次看下这段代码:

你真的会创建一个线程吗?

其实除了System.out.println("Runnable running");是我们需要执行的线程体之外其他都是模版代码,那么为什么我们为了传递一行实际有用的代码要把整个类传递进去呢? Java8提出了函数式编程思想,可以将一个函数作为参数直接传递给方法,并可以将函数使用Lambda表达式来简化表达,使用Lambda表达式创建的线程如下:

你真的会创建一个线程吗?

总结

下图总结了创建线程的方式,当然,实际应用中我们更多的使用线程池来创建一个线程,但是也离不开这些基础,更重要的是思想,好了关于线程池的部分我们以后文章再见。

你真的会创建一个线程吗?

粉丝福利

最近我也根据上述的技术体系图搜集了几十套阿里、头条、蚂蚁金服等公司19年的面试题,把技术点整理成了视频(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。相信它会给大家带来很多收获。(更全的内容和资料,在文末获取)

Java架构进阶资源

你真的会创建一个线程吗?

分析源码

你真的会创建一个线程吗?

分布式架构

你真的会创建一个线程吗?

上图中的资料都是我精心录制视频,感兴趣的可以到我的Java学习圈子: 免费获取。希望能够在你接下来即将应对的的面试过程中能够尽到一份绵薄之力。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,271评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,275评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,151评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,550评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,553评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,559评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,924评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,580评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,826评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,578评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,661评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,363评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,940评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,926评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,872评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,391评论 2 342

推荐阅读更多精彩内容

  • 1.1 多线程介绍 学习多线程之前,我们先要了解几个关于多线程有关的概念。 进程:进程指正在运行的程序。确切的来说...
    Pecksniff1994阅读 1,543评论 0 2
  • 多线程主要技术进程与线程线程状态阻塞状态分类线程的调度常用函数说明Thread类方法创建线程线程池线程安全向线程传...
    小石头呢阅读 1,385评论 3 15
  • 林炳文Evankaka原创作品。转载自http://blog.csdn.net/evankaka 本文主要讲了ja...
    ccq_inori阅读 643评论 0 4
  • Java多线程学习 [-] 一扩展javalangThread类 二实现javalangRunnable接口 三T...
    影驰阅读 2,948评论 1 18
  • 并发与并行 并发:指两个或多个事件在同一个时间段内发生。 并行:指两个或多个事件在同一时刻发生(同时发生)。 线程...
    LiMingRan阅读 690评论 0 1