java并发
并发问题
学习带师
这个作者很懒,什么都没留下…
展开
-
队列同步器AQS之独占模式
1、独占式同步状态获取:不响应中断通过调用同步器的acquire(intarg)方法可以获取同步状态,该方法对中断不敏感,也是由于线程获取同步状态失败后进入同步队列中,后续对线程进行中断操作时,线程不会从同步队列中移除。// 独占式同步状态获取与释放(不响应中断方式获取)public final void acquire(int arg) { if (!tryAcquire(a...原创 2019-12-08 20:19:04 · 131 阅读 · 0 评论 -
AQS同步器介绍
概述:队列同步器 AbstractQueuedSynchronizer (简称:同步器、AQS),是用来构建锁或者构建其他同步组件的基础框架,它使用了一个 int 成员变量表示同步状态,通过内置的 FIFO 队列来完成资源获取线程的排队工作。同步器是一个抽象类,同步器的主要使用方式是继承,子类通过继承同步器并实现其中的抽象方法来管理同步状态。同步状态的改变主要通过三个方法来完成,getSt...原创 2019-12-07 20:03:45 · 175 阅读 · 1 评论 -
final关键字
final的用法:被final修饰的类,该类无法被继承 被final修饰的方法,该方法无法被覆写 被final修饰的变量,该变量在声明的时候,就必须初始化一下内容参考博文:https://blog.csdn.net/pcwl1206/article/details/84925372#commentBox一.final域的重排序规则,需要编译器,处理器要遵循的规则在构造函数内对一个...原创 2019-11-28 21:20:27 · 59 阅读 · 0 评论 -
线程安全之必然出现死锁的例子
什么是线程安全?不管业务中遇到怎样的多个线程访问某对象或某方法的情况,在编程业务逻辑的时候都不需要额外做任何处理,程序也可以正常运行(可以像单线程编程一样)什么情况下会出现线程安全问题?1.访问共享资源2.依赖时序的操作,比如read-modify-write,即使每一步都是线程安全,还是存在并发3.不同的数据之间存在捆绑关系,比如Ip地址和端口号,要不都修改,要么全不修改...原创 2019-11-13 16:50:53 · 72 阅读 · 0 评论 -
线程的未捕获异常UncaughtException应该如何处理?
可以使用UncaughtExceptionHandler,有以下的原因:首先应该注意:try/catch只能捕获对应线程内的异常,不同的线程组合在一个用try/catch进行包起来不能进行捕获主线程可以轻松发现异常,而子线程不行 子线程的异常不会影响到主线程的执行,即使子线程有异常抛出,并且打印了异常信息,主线程依然能够正常运行子线程异常无法用传统方法进行捕获 ...原创 2019-11-12 16:10:13 · 2492 阅读 · 0 评论 -
Sleep,join,yield方法,守护线程
作用:Sleep方法可以让线程进入waiting状态,并且不占用cpu资源,但是不释放锁,直到规定时间后再执行,休眠期间如果被中断,会抛出异常 特定:不释放锁,指的是不释放synchronized和Lock的锁, 面试问题:wait方法和sleep方法的异 相同:阻塞(不只是Blocked) 都能够响应中断不同:wait/notify必须放在同步方法中执行,而sleep方法...原创 2019-11-10 15:56:56 · 103 阅读 · 0 评论 -
ThreadLocal
此篇文章参考了:https://blog.csdn.net/pcwl1206/article/details/84859661和http://www.nowamagic.net/academy/detail/3008050ThreadLocal:是什么?ThreadLocal又称为线程局部变量,访问某个变量的每个线程拥有自己的局部变量,独立于变量的初始化能干什么?解决了多线程环境下...原创 2019-11-09 20:38:23 · 112 阅读 · 0 评论 -
synchronized关键字
主要内容:synchronized的概述synchronized的用法多线程访问同步方法的7种情况synchronized的性质原理缺陷一:synchronized的概述1.作用:可以修饰方法或者以同步块的形式来使用,确保多个线程在同一个时刻,只能有一个线程处于方法或同步块中,2.地位:java的关键字,被java语言原生支持,是最基本的互斥同步手段...原创 2019-11-07 22:31:52 · 65 阅读 · 0 评论 -
wait,notify,notifyAll的用法
目录wait的作用和用法notify和notifyAll的区别wait只释放当前的那把锁用notify和notify实现生产者消费者模式 多线程实现奇偶数交替打印 常见面试题一:当前线程中调用对象的wait方法,将会释放锁/** * 展示wait和notify的基本用法 * 1.研究代码的执行顺序 ...原创 2019-11-06 16:27:56 · 247 阅读 · 0 评论 -
线程的6个状态即生命周期
目录 线程的6个状态 每个状态是什么含义 状态间的转化图示 阻塞状态是什么? 面试题 一:线程的6种状态NEW:表示已创建,但还没有启动的新线程 Runnable:线程新建后调用star方法进入此状态,相当于操作系统的ready,running状态,即有可能在运行也有可能没在运行 Blocked:线程在进入synchonized关键字修饰的代码中没有获得...原创 2019-11-05 16:25:02 · 392 阅读 · 0 评论 -
错误停止线程
主要包括以下二大方面:被弃用的stop,suspend,resume方法 用volatile设置boolean标记位 停止线程相关重要函数 停止线程面试题第一:采用stop方法来停止线程,会导致线程运行到一半突然停止,没办法完成一个基本单位的操作,会造成脏读数据,且会释放监视锁suspend方法不会释放锁,容易造成死锁第二:volatile在生产者模式下会失效,线程长时间...原创 2019-11-04 15:39:47 · 109 阅读 · 0 评论 -
并行和并发的区别
并行指的是二个或者多个事件在同一时刻发生 并发指的是二个或多个事件在同一时间间隔发生原创 2019-11-04 09:09:42 · 83 阅读 · 0 评论 -
如何正确停止线程
原理:new一个Thread对象,如:Thread thread=new Thread(Runnable接口的实现类);然后调用thread.interrupt()方法使用thread.interrupt(),只是发出中段信号,线程停不停止并不由自己决定,而是由被停止的线程决定,不是强制停止线程。普通情况下停止线程(run内没有sleep或者wait方法),还需要调用!Thread.cur...原创 2019-11-03 17:44:47 · 106 阅读 · 0 评论 -
start和run方法的区别
参考链接:https://blog.csdn.net/QQ2899349953/article/details/81772104转载 2019-10-27 22:21:05 · 170 阅读 · 0 评论