
java并发
文章平均质量分 83
daiwei-dave
剖开表象,理解实质.一个领域深入的越深,扩展另一个领域时则更全面
展开
-
线程池核心原理与应用
线程池是一种多线程开发的处理方式,线程池可以方便得对线程进行创建,执行、销毁和管理等操作。主要用来解决需要异步或并发执行任务的程序。原创 2024-04-30 09:47:08 · 1043 阅读 · 0 评论 -
ThreadLocal底层实现原理
一、基础概念ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。1.1 同步机制的比较对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响。与volatile关键字的对比在并发编程中,多个线程访问同一个变量,可能读到另一个线程修改后的值,也可能不是修改后的值。所.原创 2021-03-21 23:54:25 · 4503 阅读 · 0 评论 -
lock锁
1.锁的意义锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。例子分析:2.比synchronized好的地方拥有了锁获取与释放的可操作性、可中断的获取锁以及超时获取锁等多种synchronized关键字所不具备的同步特性。例如:针对一个场景,手把手进行锁获取和释放,先获得锁A,然后再获取锁B,当锁B获得后,释放锁A同时获取锁C,当锁C获得后,再...原创 2018-01-03 11:12:02 · 1781 阅读 · 0 评论 -
线程池核心原理分析-即将作废
一、基础概念线程池是一种多线程的处理方式,线程池可以方便得对线程进行创建,销毁和管理。线程池解决的问题:1.线程池未出现前:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间,而且会消耗系统资源。 如果使用线程池:线程在run()方法执行完后,不用将其销毁,让它继续保持空闲状态,当有新任务...原创 2018-02-01 11:48:48 · 2896 阅读 · 1 评论 -
java线程基础知识
1.进程和线程的区别是什么? 进程是执行着的应用程序,如手机上的一个应用。而线程是在进程中执行的一个任务,他可以共享进程中的资源。线程可以被称为轻量级进程,它在进程中进行创建和销毁线程相比于进程的创建和销毁需要较少的资源和花销。2.创建线程有几种不同的方式? @see http://blog.youkuaiyun.com/sinat_34814635/article/details/78959162...原创 2018-03-10 15:57:08 · 259 阅读 · 1 评论 -
并发编程理论
一、内存模型:计算机内存模型:计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起来要慢的多,因此如果任何时候对数据的操作都要通过和内存的交互来进行,会大大降低指令执行的速度。...原创 2018-07-06 17:11:24 · 670 阅读 · 1 评论 -
java锁
锁的类型锁从宏观上分类,分为悲观锁与乐观锁。乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java中的乐观锁基本都是通过CAS操作实现的,CA...原创 2018-03-18 17:41:08 · 434 阅读 · 1 评论