Java学习 线程安全 在多线程的情况下,我们会遇到这样一个问题,这里举例 A、B、C 三个线程,它们共同操作同一个资源(呐,这里同一个资源指的是,变量,方法这些,更准确的话,应该说是内存,毕竟值都是存储内存中的)。记住,前提是多线程,毕竟如果你单线程,就不可能不安全了,单线程直接安安全全! 2022-05-29 浏览(180) Java学习 评论(0) 阅读全文
JUC部分并发类使用方式 下面介绍的是JUC包下一些线程安全类的一些简单使用和一些小demo。Semaphore信号量,即可以同时使用的线程数,tryrequire就是将信号量减一,release就是信号量+1,当等于0就 2022-05-18 浏览(261) Java技术 评论(0) 阅读全文
并发编程之临界区\阻塞\非阻塞\死锁\饥饿\活锁 为了方便大家理解,我们先看下面的这样一张图,我们可以把房子看作一个进程,每个房子里面的住户及其活动看作一个线程,饮水机、健身器材、厕所都属于共享资源。这里的共享资源实际就是临界区的概念,临界区的资源在同一时间只能被一个线程(住户)使用,所以一旦临界资源被占用,其他的线程(住户)能做的就只有等待。 2022-05-11 浏览(290) Java学习 评论(0) 阅读全文
synchronized和ReentrantLock区别简介说明 在多线程开发中,需要锁定指定代码块,使其在同一时间只能由一个线程运行,我们日常开发中常用的同步锁有:synchronized和ReentrantLock,那么他们两者之间到底有什么不同之处呢? 下文笔者讲述synchronized和ReentrantLock区别简介说明,如下所示 区别1:灵活性不同 synchronized是关键字,无灵活性 ReentrantLock是类 2022-05-11 浏览(325) Java学习 评论(0) 阅读全文
Volatile的学习 首先先介绍三个性质可见性可见性代表主内存中变量更新,线程中可以及时获得最新的值。下面例子证明了线程中可见性的问题由于发现多次执行都要到主内存中取变量,所以会将变量缓存到线程的工作内存,这样当其 2022-05-08 浏览(293) Java学习 评论(0) 阅读全文