Java多线程与JUC
本栏是记录我学习Java多线程与JUC的笔记
JokerCaesar6
喜欢编程,热爱生活
展开
-
Java多线程与JUC——06死锁的出现与解决
死锁 在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,程序不再往下执行。 我们只能通过中止并重启的方式来让程序重新执行。 这是我们非常不愿意看到的一种现象,我们要尽可能避免死锁的情况发生! 造成死锁的原因可以概括成三句话: 1.当前线程拥有其他线程需要的资源 2.当前线程等待其他线程已拥有的资源 3.都不放弃自己拥有的资源 1.锁顺序死锁(最简单的死锁) 首先我们来看一下最*...原创 2020-03-12 17:32:29 · 282 阅读 · 0 评论 -
Java多线程与JUC——05线程同步
说线程同步方式之前,先理解一下线程的安全问题,从而搞懂为什么需要线程同步: 一、什么情况下会产生线程安全问题? 同时满足以下两个条件时: 1,多个线程在操作共享的数据。 2,操作共享数据的线程代码有多条。 当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算,就会导致线程安全问题的产生。 例1:四个线程卖100张票 public class TicketDemo implements ...原创 2020-03-07 23:39:17 · 234 阅读 · 0 评论 -
Java多线程与JUC——04控制线程
Java的线程支持提供了一些工具方法,通过这些方法可以很好地控制线程的执行。 Join线程 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并发执行变为串行执行。具体看代码: public class ThreadTest1 { /** * join的意思是使得放弃当前线程的执行,并返回对应的线程,例如下面代码的意思就是: ...原创 2020-03-05 18:09:50 · 226 阅读 · 0 评论 -
Java多线程与JUC——03线程的生命周期
当线程被创建并启动以后,它不是一启动就进入执行状态,也不会一直处于执行状态,而是会经历5种状态。 5种状态就是线程的生命周期,线程状态的5个阶段具体分别是: 新建状态(New)、就绪状态(Runnable)、运行状态(Running)、阻塞状态(Blocked)、死亡状态(Dead) 新建状态(New) 当程序使用new关键字创建了一个线程之后,该线程就处于新建状态。例: Thread t = ...原创 2020-03-04 16:28:47 · 168 阅读 · 0 评论 -
Java多线程与JUC——02线程的创建与启动
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。 线程的创建一般有以下三种: 一、继承Thread类创建线程类 步骤1.定义Thread类的子类,并重写该类的run()方法,该run()方法的方法体就代表了线程需要完成的任务, 因此经常把run( )方法称为线程执行体。 步骤2.创建Thread子类的实例,即创建了线程对象。你每new出一个对象,就意味着你创...原创 2020-03-03 18:46:20 · 180 阅读 · 0 评论 -
Java多线程与JUC——01理解进程线程的概念
今天开始认真的学一下Java线程与JUC,所以开辟一个新的专栏来记录笔记。希望也能对你的学习有所帮助,喜欢的话就多多关注我吧。我会一直将我的笔记传到我的博客上与大家分享交流。 1.进程 几乎所有的操作系统都支持进程概念,进程是处于运行过程中的程序,进程是操作系统中进行资源分配的基本单位。 一般而言进程包含如下三个基本特征 。 独立性:指进程实体是一个能独立运行、独立获得资源和独立接受调度的基本单...原创 2020-03-03 17:24:34 · 245 阅读 · 0 评论