24节视频+源码解析深度理解多线程 | Java开发者高级应用站-阿里云开发者社区

开发者社区> 温柔的养猫人> 正文

24节视频+源码解析深度理解多线程 | Java开发者高级应用站

简介: 如果有一天,你遇到这样一个问题:总票数固定,但是很多人都在卖这种票。这种情况下,我们怎么样才能保证票不被重复售卖?又该怎样去保证所有售出票的数量的准确?是不是已经发现,凭借当前所学所知似乎难以解决。现在,就来带你去探索多线程开发,解决这个问题!
+关注继续查看

点击查看视频

如果有一天,你遇到这样一个问题:总票数固定,但是很多人都在卖这种票。这种情况下,我们怎么样才能保证票不被重复售卖?又该怎样去保证所有售出票的数量的准确?是不是已经发现,凭借当前所学所知似乎难以解决。现在,就来带你去探索多线程开发,解决这个问题!

在这里,你将通过15篇文章对Java多线程有一个初步且具体的认识,Thread、Runnable、Callable等开发标准为你指明多线程开发之路,synchronized关键字确保各线程有序调用,另外还介绍了其他各种方法来实现各式各样的操作,你将收获你先要的答案。

静看Java多线程之路如何直通罗马

传统的Dos是单进程处理的模式,而后来多进程的出现大大优化了电脑的处理速度。本节将引出Java多线程的概念。

【本节目标】
通过阅读本节内容,你将了解到进程与线程的关系,并了解到Java为了优化运行能力支持了多线程开发能力。

点击学习>>

多线程,从start开始!

本节将为读者介绍多线程的实现方法与相关的注意事项,并指出了线程类中必须实现的run方法的作用。

【本节目标】
通过阅读本节内容,你将了解到继承Thread类并覆写run方法的具体要求,并能够通过实例化线程继承类调用start方法开启线程的过程中发生的变化。

点击学习>>

看Runnable如何巧避单继承限制

上一节中介绍到通过继承Thread类实现多线程的方法,这样做同时也会受到Java单继承的限制。本节将介绍如何借助Runnable接口避开这个限制。

【本节目标】
通过阅读本节内容,你将了解到如何实现Runnable接口并结合Thread类完成多线程的实现,并学会简单的运用。

点击学习>>

深入剖析Thread与Runnable关系

既然实现了Runnable的类能够传入Thread构造方法完成新的线程的生成,说明他们之间存在一定的联系,本节将为你揭晓此中奥秘。

【本节目标】
通过阅读本节内容,你将通过Thread类的定义及其具体代码发现它与Runnable的内在联系,对多线程的概念有更深入的理解。

点击学习>>

进一步探索多线程的实现

Runnable接口中并没有提供返回一个值的功能,本节提到的Callable则对这一问题进行了解决。让我们一起来进一步探索多线程的运行吧。

【本节目标】
通过阅读本节内容,你将了解到Callable的相关功能及其实现方法,对Callable和Runnable之间的区别和联系有一定的认识,了解到多线程在正常运行中的各种状态和状态转变的时机,对多线程有更深入的理解。

点击学习>>

线程起名,分工有序

本节为读者介绍了在使用线程功能的过程中分别为各个线程命名的好处以及常规开发中主线程与子线程的分工模式。

【本节目标】
通过阅读本节内容,你将学会通过线程命名实现对各个线程的准确控制,了解到线程的默认起名规则,并知晓main方法作为主线程处理总体逻辑,多个子线程分别处理各种复杂耗时的逻辑的开发模式。

点击学习>>

教你随心操控线程状态

通过之前的学习我们可以启动一个线程,但还没办法干扰其运行过程。想知道如何手动控制线程的各种状态吗,本节将为你揭晓。

【本节目标】
通过阅读本节内容,你将学会使用sleep方法使线程休眠、使用interrupt方法强行中断线程,并掌握当线程被中断时处理中断异常的方法。

点击学习>>

迅速读懂Java线程的交通规则

线程就像现实世界里复杂的交通线上运行的汽车,有停车让行的,也有一路高歌的,甚至还有特殊情况优先行驶的情况,本节将一一介绍这些内容。

【本节目标】
通过阅读本节内容,你将学会使用join方法让线程强制一直执行、使用yield方法礼让其他线程优先执行,了解并学会设置线程的优先级使系统自动调度资源执行线程。

点击学习>>

使用同步解决多人卖票问题

本节先由多人合卖10张票为例,引出了线程同步问题,并结合实例代码讲解了同步机制的实现办法。

【本节目标】
通过阅读本节内容,你将了解到线程同步问题出现的原因,并学会使用synchronized关键字实现多个线程同时只有一个能进行调用的限制,解决线程同步问题。

点击学习>>

同步的缺陷-死锁问题

在Java发展进程中,往往是为了解决一个或多个问题而提出新的解决办法,但伴随着新的内容的出现,也会出现新的问题。本节将为读者介绍同步机制带来的死锁问题。

【本节目标】
通过阅读本节内容,你将通过实际运行一段代码发现两个进程互相等待对方让出资源而造成死锁的问题,了解到此问题出现的原因并具有一定的避免此类问题的认识。

点击学习>>

经典案例:生产者-消费者模型

本节将为读者介绍多线程开发领域中著名的案例-生产者-消费者操作,并指出这一操作在普通的实现过程中遇到的两个关键问题。

【本节目标】
通过阅读本节内容,你将初步了解生产者-消费者操作的内容,并能使用线程相关方法简单实现这个操作,初步了解到这一操作中的线程不同步问题与重复操作问题。

点击学习>>

一文速解生产者-消费者模式问题

本节将结合具体实例,手把手带领读者解决上一节中提到的生产者-消费者操作中的两大问题。

【本节目标】
通过阅读本节内容,你将通过实操代码,进一步掌握synchronized关键字的使用方法,解决同步问题,学会使用Object类中提供的相关方法解决重复问题。

点击学习>>

教你在停车前为线程配个“保镖”

众所周知,死锁是一种十分危险的情况,所以暴力型的线程停止操作被禁用了。为保证线程的流畅运行,本节将带着读者优雅地停止线程,并在线程运行路上安排守护线程。

【本节目标】
通过阅读本节内容,你将学会借助循环实现对线程的较为安全的停止操作,并学会创建守护线程,保证相关线程的平稳运行。

点击学习>>

另类的“同步”-volatile关键字

本节将为读者展示另一种貌似能解决同步问题的关键字-volatile,并结合实际代码为读者深刻讲解了这个关键字的相关机制,剖析了它和synchronized的不同之处。

【本节目标】
通过阅读本节内容,你应当掌握volatile关键字的适用范围及其作用,认识到volatile关键字虽然使数据操作直接面向原始变量,使得变量完成一定意义上的同步,但仍无法替代synchronized的作用。

点击学习>>

三则案例,助你掌握多线程

经历了前几节的学习,相信你已经对多线程有了自己的见解,现在,跟作者一起实操三则案例,助你快速消化所学知识吧!

【本节目标】
通过阅读本节内容,你将通过数字加减、生产电脑、竞争抢答三则案例的多线程相关逻辑实现,进一步掌握多线程开发的相关能力,对线程的各类操作更加得心应手。

点击实战学习>>

更多Java开发者课程尽在→Java开发者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Spring-boot+Dubbo应用启停源码分析
你有没有想过一个问题?incubator-dubbo-spring-boot-project中的DubboConsumerDemo应用就一行代码,main方法执行完之后,为什么不会直接退出呢?
2553 0
Java多线程-实例解析
Java多线程-实例解析 Java多线程实例 3种实现方法Java中的多线程有三种实现方式:1.继承Thread类,重写run方法。Thread本质上也是一个实现了Runnable的实例,他代表一个线程的实例,并且启动线程的唯一方法就是通过Thread类的start方法。
1174 0
java json 解析
引用:http://zjny520.iteye.com/blog/943704 一json-lib.jar开发包使用依赖包 json-lib.jar开发包使用需要依赖包以下开发包: Json-lib requires (at least) the following dependencies in your classpath:     * jakarta commons-lang 2.
667 0
开源代码及Linux在云计算中的应用
本文讲的是开源代码及Linux在云计算中的应用,云计算和存储将物理资源(例如处理器和存储)转换成 Internet 上可伸缩、可共享的资源(“作为服务”的计算和存储)。虽然虚拟化不是一个新概念,但是通过服务器虚拟化实现的物理系统共享,的确能使资源的可伸缩性大得多,效率也高得多。
1354 0
Java解析(读取)Json数据
以前看过书上说,XML是web service间传输信息的标准格式吧,就看了看XML。最近在做个网站,又说是有了JSON,第一回听说就看了看,总结总结一下。 1.JSON介绍   JSON比XML简单,主要体现在传输相同信息的情况下,文件的大小不同。
1511 0
Java线程池架构(一)原理和源码解析
在前面介绍JUC的文章中,提到了关于线程池Execotors的创建介绍,在文章:《java之JUC系列-外部Tools》中第一部分有详细的说明,请参阅; 文章中其实说明了外部的使用方式,但是没有说内部是如何实现的,为了加深对实现的理解,在使用中可以放心,我们这里将做源码解析以及反馈到原理 上,Executors工具可以创建普通的线程池以及schedule调度任务的调度池,其实两者实现上还是有一些区别,但是理解了ThreadPoolExecutor,在看ScheduledThreadPoolExecutor就非常轻松了,后面的文章中也会专门介绍这块,但是需要先看这篇文章。
1120 0
10.Eclipse下Ndk开发(ffmpeg native 方式播放视频,万能解码(SurfaceView, 播放音频,)
(创建于2018/1/26) 遇到的问题 遇到一个很棘手的问题,在Eclipse上引入两个头文件报错 #include #include 右键->Porperties->C/C++General->Paths and Symbols中可以看到 987671.
1143 0
1172
文章
2
问答
来源圈子
更多
Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载