java多线程
pc彭诚诚的博客
这个作者很懒,什么都没留下…
展开
-
synchronized与Lock的区别
线程与进程线程与进程在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程。关系是线程–>进程–>程序的大致组成结构。所以线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。以下我们所有讨论的都是建立在线程基础之上。四种锁的介绍可重入锁如果锁具备可重入性,则称作为可重入锁。所...原创 2019-10-25 15:08:05 · 138 阅读 · 0 评论 -
多线程生命周期(新建、就绪、运行、阻塞和死亡)
状态概述新建状态(New Thread)线程处于创建状态,并没有调用start()方法之前就绪状态(Runnable)调用start()方法之后进入到就绪状态,系统为该线程分配了除CPU外的所需资源,使该线程处于就绪状态。此外,如果某个线程执行了yield()方法,那么该线程会被暂时剥夺CPU资源,重新进入就绪状态运行状态(Running)Java运行系统通...原创 2019-10-24 15:59:19 · 380 阅读 · 0 评论 -
线程池的实现原理和常见问题
线程池实现原理1.线程池状态runState表示当前线程池的状态,它是一个volatile变量用来保证线程之间的可见性static final变量表示runState可能的几个取值RUNNING当创建线程池后,初始时,线程池处于RUNNING状态SHUTDOWN如果调用了shutdown()方法,则线程池处于SHUTDOWN状态,此时线程池不能够接受新的...原创 2019-10-24 15:13:19 · 256 阅读 · 0 评论 -
如何确保线程顺序执行?
1、thread.Join()你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成;这里主要是利用Join的阻塞效果,来达到我们的使用目的。进入join源码后,首先看到的是一个传入0参数的join方法,此处选择继续进入:/** *...原创 2019-10-24 14:26:17 · 716 阅读 · 0 评论 -
Java多线程—死锁
java多线程中的死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去 这是一个严重的问题,因为死锁会让你的程序挂起无法完成任务,死锁的发生必须满足以下四个条件:互斥条件:一个资源每次只能被一个进程使用。请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺...原创 2019-10-24 11:51:26 · 109 阅读 · 0 评论