JAVA并发基础
文章平均质量分 73
TheCarol
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
不懂并发?看完就超神!!!Java并发基础(六)
并发面试题sleep和wait、yield的异同wait 方法是属于 Object 类中的,wait 过程中线程会释放对象锁,只有当其他线程调用 notify 才能唤醒此线程。wait 使用时必须先获取对象锁,所以在调用wait()时,该线程必须已经获得锁即必须在 synchronized 修饰的代码块中使用,那么相应的 notify 方法同样必须在 synchronized 修饰的代码块中使用,如果没有在synchronized 修饰的代码块中使用时运行时会抛出IllegalMonitorStateE原创 2021-01-23 15:29:37 · 215 阅读 · 0 评论 -
不懂并发?看完就超神!!!Java并发基础(五)
concurrenthashmaphashtable、vector和collections底层都是使用synchronized的重量级锁实现的线程安全,性能不如使用轻量级锁的集合类。而collections使用装饰器模式将原本线程不安全的比如map、list等通过synchronized变为线程安全的,但是其性能任然不好。hashmap在多线程下的问题jdk7并发死链由于jdk7在插入链表时是使用头插法,在扩容时会进行迁移,迁移过程会先记录下old table的e和next,但在多线程下,可能会原创 2021-01-23 15:24:06 · 259 阅读 · 1 评论 -
不懂并发?看完就超神!!!Java并发基础(四)
JUCfastfail快速失败机制是Java集合一种错误检测机制,在多线程下使用线程不安全的集合,每次在修改集合时都会将modCount++,而在遍历集合是会检查mod。AQS 重点Abstract Queued Synchronizer,阻塞式锁和相关同步工具的框架,用来构建锁和同步器的,AQS底层使用模板模式,Reentrantlock,semaphore等都都需要重写指定的方法。isHeldExclusively()//该线程是否正在独占资源。只有用到condition才需要去实现它。t原创 2021-01-23 15:14:41 · 161 阅读 · 0 评论 -
不懂并发?看完就超神!!!Java并发基础(三)
线程池ThreadPoolExecutor线程池状态七个构造方法参数线程池中主要分为核心线程,救急线程,阻塞队列,核心线程会不断执行任务,任务执行完后会接着执行任务(一直存在),而救急线程是在阻塞队列满后,就会接下任务的线程(抢救),corePoolSize指定core thread的数量,而maximumPoolSize就是core thread和救急线程的总和。keepalivetime、unit表示救急线程的生存时间和时间单位,救急线程在执行完任务后会等待keepalivetime指定原创 2021-01-23 14:43:13 · 321 阅读 · 0 评论 -
不懂并发?看完就超神!!!Java并发基础(一)
多线程基本概念参考课程:全面深入学习java并发编程,java基础进阶中级必会教程进程与线程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线程的容器。并行与并发并行:在同一时刻一个进程的一条指令执行,只是由于多个进程被快速轮转,使得在宏观上好像是多个进程同时进行。并行:在同一时刻内多个进程的多条指令在多个处理器上同时执行,这种情况下才原创 2021-01-22 13:56:29 · 212 阅读 · 0 评论 -
不懂并发?看完就超神!!!Java并发基础(二)
wait、notifywait和notify调用的前提是它们在调用之前是owner,如果在没有获得锁就调用会报错(所以需要使用syn)。一般使用motifyall,因为notify不能指定唤醒会造成虚假唤醒。● wait(),notify(),notifyAll() 和 synchonized 需要搭配使用, 用于线程同步● 线程被notify后,会从wait的地方开始继续执行。● 当一个线程在执行synchronized 的方法内部,调用了wait()后, 该线程会释放该对象的锁,然后该线程原创 2021-01-23 14:27:12 · 211 阅读 · 0 评论
分享