
Java
码上云端
这个作者很懒,什么都没留下…
展开
-
Java中的volatile
Java中的volatileJava语言提供了一种稍弱的同步机制,即volatile变量,用来确保将变量的更新操作通知到其他线程。当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。volatile变量不会被缓存在寄存器或者对其他处理器不可见的地方,因此在读取volatile类型的变量时总会返回最新写入的值。Java 内存模型JMM(Java Memory Model):Java 内存模型,是 Java 虚拟机规范中所原创 2021-06-21 16:51:23 · 259 阅读 · 0 评论 -
线程池的简单使用
线程池简介线程池(英语:thread pool):一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。线程池的优势降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复原创 2021-06-20 16:25:03 · 227 阅读 · 0 评论 -
ReadWriteLock简单使用
ReadWriteLock简单使用描述:ReadWriteLock是读写锁,维护一对关联的locks ,一个用于只读操作(也叫读锁或者共享锁——多个线程可以同时占有),一个用于写入操作(也叫写锁或者独占锁——一次只能被一个线程占有)。用法:读用读锁,写用写锁,读写分离。例如:自定义一个缓存类,在多线程情况下不使用锁进行写入操作,写入操作混乱。加入读写锁,写入操作正常。public class demo3 { public static void main( String[] args )原创 2021-06-19 23:39:22 · 296 阅读 · 0 评论 -
Semaphore简单使用
Semaphore简单使用描述:一个计数信号量。 在概念上,信号量维持一组许可证。 如果有必要,每个acquire()都会阻塞,直到许可证可用,然后才能使用它。 每个release()添加许可证,潜在地释放阻塞获取方。 但是,没有使用实际的许可证对象; Semaphore只保留可用数量的计数,并相应地执行。用法: 信号量通常用于限制线程数,而不是访问某些(物理或逻辑)资源。 例如:一个停车场有3个车位,有6辆车要停,只有先抢到的才能停;停满了,只有等其他车辆离开,才能继续抢车位。 publi原创 2021-06-19 16:57:53 · 153 阅读 · 0 评论 -
CyclicBarrier简单使用
CyclicBarrier简单使用描述: CyclicBarrier允许一组线程全部等待彼此达到共同屏障点的同步辅助。 循环阻塞在涉及固定大小的线程方的程序中很有用,这些线程必须偶尔等待彼此。 屏障被称为循环 ,因为它可以在等待的线程被释放之后重新使用。用法:5个人开会,只有5个人都到达会议室后,才能开会,然后发表讲话 public static void main(String[] args) throws InterruptedException { // 所有人到齐,开原创 2021-06-19 16:30:09 · 109 阅读 · 0 评论 -
CountDownLatch简单使用
CountDownLatch简单使用描述:CountDownLatch允许一个或多个线程等待直到在其他线程中执行的一组操作完成的同步辅助。用法: 多个人等一个信号后继续执行操作。例如一共需要6个人在车上才开车。 public static void main(String[] args) throws InterruptedException { // 减法计数器,总数是6 CountDownLatch countDownLatch = new CountDo原创 2021-06-19 15:33:14 · 160 阅读 · 0 评论 -
synchronized和Lock的使用
多并发案例一个车站有三个窗口同时卖30张票,每个窗口都有40个人在排队买票synchronized和Lock的区别synchronized是内置的Java关键字;Lock是一个接口synchronized无法判断获取锁的状态;Lock可以synchronized会自动释放锁;Lock必须收动释放锁,如果不释放,就会出现死锁synchronized多个线程获取同一个锁,其中一个线程已经获取锁,但发生阻塞,其他线程就会一直等待;Lock不一定等待下去synchronized是可重入锁,不可以中断原创 2021-06-18 14:17:41 · 323 阅读 · 0 评论