
多线程
文章平均质量分 69
好嗨学JAVA
这个作者很懒,什么都没留下…
展开
-
共享锁的实现
Class CountDownLatch(信号量)使用场景:(1)在某个线程处等待一组线程全部执行完,再执行后边的代码创建初始值=0,线程结束 release(),等待的地方acquire()(2)多线程环境下,有限资源的控制,创建一个线程数(有限资源),线程结束:release(),线程开始:acquire()Class CountDownLatch使用场景:在某个线程某处等待一组线程全部执行完毕Class CycllcBarrier...原创 2021-07-19 17:42:53 · 252 阅读 · 0 评论 -
Lock体系与AQS
lock体系 首先知道为什么Java有了synchronized实现管程了,为什么还要再造出 lock 呢?synchronized在处理死锁问题时方法非常局限,只能避免资源上锁线性化,使用 lock 有很多方法来避免死锁。 lock是juc(Java并发包)下的类lock解决死锁的方法lock 提供了3个API来解决死锁问题//支持中断的API,能够响应中断,当给阻塞的线程发送中断信号时,能够唤醒它,释放曾经持有的锁。破坏不可抢占条件void lockInterruptibly() thro原创 2021-07-19 16:52:56 · 156 阅读 · 0 评论 -
常见的策略锁(锁的类型)
乐观锁乐观锁假设认为数据一般情况下不会产生冲突,所以在数据进行提交更新时,才会正式对数据是否产生并发冲突进行检测,如果发现并发冲突了,则让用户返回错误的信息,让用户决定如何去做。乐观的心态看待线程安全问题,字节修改共享变量,基于某些机制,要么直接修改成功(没有冲突),要么修改失败(通过返回值可以知道,一般是Boolean)。不管成功还是失败,自行决定下一步怎么做(Java程序层面看,是非阻塞式的方式)悲观锁总是假设最坏的情况,每次去拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到..原创 2021-07-17 14:05:14 · 245 阅读 · 1 评论 -
Java线程安全问题
线程安全 如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。线程不安全线程不安全的原因从代码层面看:多个线程对同一变量的操作(读、写),有一个写操作,就有线程安全问题从原理看:(1)原子性:多行执行代码,执行时是一组不可分割的最小执行单位,多个线程同时并发执行的代码指令,可能在一个线程操作一个共享变量时,是有前后依赖关系的,指令之间有其他的线程操作,就会导致想线程不安全(2)可见性主存:线程都使用的共享区域,对其中变量/对象的操作原创 2021-07-14 17:51:35 · 167 阅读 · 0 评论 -
初识多线程
1.认识多线程线程线程存在于进程的内部,是比进程还小的单为。进程是系统分配资源的最小单位,线程是系统调度的最小单位。一个进程之内的线程之间是可以共享资源的,每一个进程至少存在一个线程,即主线程。多线程的作用在确保安全的情况下,尽可能提高系统效率,尽可能利用系统资源。使用场景创建线程是比较耗费时间和资源的,所以要综合考虑同时执行指令(任务量)+创建线程数+系统可利用资源(内存,CPU)一般在一个时间点要同时做多件事(执行多行代码)时就可以使用多线程。内部类匿名内部类:在一个方法中,new类型原创 2021-07-14 11:12:37 · 89 阅读 · 0 评论 -
初识操作系统与进程
操作系统概念任何计算机都包含一个基本的程序集合,称为操作系统。包括内核(进程管理、内存管理、文件管理、驱动管理),其他程序(shell程序、库函数等)进程管理即管理软件。内存管理,文件管理,驱动管理都是管理硬件对库函数的理解库函数是系统提供的对某个广泛使用的操作接口(如文件的读取/写入,网卡读写数据)。某些特定权限的功能,在程序中必须调用系统库函数来实现进程 对于操作系统来说,一个任务就是一个进程,担当分配系统资源(CPU时间,内存)的实体理解Java程序Java代码运行机制开发期原创 2021-07-13 15:02:00 · 110 阅读 · 0 评论