java笔记——并发线程相关
文章平均质量分 96
ww0peo
这个作者很懒,什么都没留下…
展开
-
java并发线程笔记目录
Java线程的实现一些概念linux系统的pthread_create函数初步猜想通过猜想模拟实现一次java的线程原创 2019-09-16 23:03:05 · 407 阅读 · 3 评论 -
2019.7.30笔记——java并发线程相关
读写锁读读并行读写串行写写串行ReentrantReadWriteLockreadLock方法 读锁writeLock方法 写锁都是同一把锁锁不能升级(读锁到写锁)可以降级(写锁到读锁)升级可能造成死锁升级会在升级到写锁时等待其他持有锁的线程释放锁如果两个以上的线程升级的话,及会互相等待升级,造成死锁降级可以避免二次排队,提高效率读锁不能加条件(Conditaion)...原创 2019-09-25 23:12:43 · 127 阅读 · 0 评论 -
2019.7.28笔记——java并发线程相关
ReentrantLock源码分析在没有竞争的情况下会公平锁效率会更高些在有竞争的情况下公平锁会比非公平锁效率高一点(可以忽略不计),只是多了个CAS判断unpark执行后,从park的方法处继续执行...原创 2019-09-25 23:12:26 · 152 阅读 · 0 评论 -
2019.7.25笔记——java并发线程相关
reentrantLocksync是实现的具体类子类有公平锁和非公平锁aqs类似于一个队列队列里的元素Node首先虚拟一个队列头tryAcquire尝试加锁线程进入公平锁是进入队列,非公平锁是直接尝试拿到锁公平锁和非公平锁唯一的区别就是公平锁会有一个判断...原创 2019-09-25 23:12:08 · 135 阅读 · 0 评论 -
2019.7.23笔记——java并发线程相关
锁有几种sync语法方便、简单 经过优化后与lock性能相当 实现不了高级功能 非公平锁lock手动释放锁 能够实现高级功能了sync使用的频率远高于lock重偏向遇到sync关键字就执行monitorenter jvm提供了规范 虚拟机自己实现hotspot用moniter实现aqscountDownLatch让多个线程同时执行让某个线程等其他的线程执...原创 2019-09-24 18:50:24 · 120 阅读 · 0 评论 -
2019.7.21笔记——java并发线程相关
executor创建线程的接口executorserviceexecutor的服务callable有返回值,可以抛出异常executors操作executor的工具类newFixedThreadPool可以设置线程池大小,队列式的shutdown方法会关闭线程池,但线程池的线程还是会执行完,并回收线程shutdownNow方法会关闭线程并且直接停止线程newCachedTh...原创 2019-09-24 18:49:25 · 184 阅读 · 0 评论 -
2019.7.7笔记——java线程并发相关
interrupt方法interrupt是一种优雅结束线程的方法一个线程很长时间没有结束一般有两种原因:1.线程陷入了一个死循环(如while(true))2.线程被阻塞(如Thread.sleep())如果想结束一个线程,jvm的想法并不是让你直接stop这个线程,而是想让你抛出异常或者将while循环的条件置为false。 @Override public void run() ...原创 2019-09-23 16:50:38 · 115 阅读 · 0 评论 -
2019.7.11笔记——java线程并发相关
守护进程守护的线程报错会中断其他线程在静态方法上加synchronized锁的是类对象ThreadLocal——线程的本地变量每个线程一一对应这个对象和线程绑定了,线程封闭变量是线程私有的Vector 同步容器Queue 队列ConcurrentLinkedQueue 并发单向链表队列 线程安全的 无界的 可设置边界 add和pollConcurrentArray...原创 2019-09-23 16:50:13 · 167 阅读 · 0 评论 -
2019.7.18笔记——java并发线程相关
在下面这段代码,按照之前的原理,因为各个线程是交替执行的,而且也设置了偏向锁延时为0,所以除了第一个线程是偏向锁,后面的线程都是轻量锁。但是有些时候会发现后面两个线程的锁却是偏向锁那么这是不是重偏向呢,我们发现这三个线程打印的对象头mark word都是一样的,我们可以假设,造成这种现象是因为前一个线程已经死亡,后一个线程被分配的id和前一个一样,所以就可以直接用前一个的锁。这样看来并没有发...原创 2019-09-23 16:49:43 · 127 阅读 · 0 评论 -
2019.7.14笔记——java并发线程相关
java object对象头mark word 64 bit前56位存储的hashcode最后一个字节第一位无意义,后面4位是分代年龄,klass 32 bit指向了方法区的模板类,字节码JOL小端存储对象的实例数据对齐字节 padding偏向锁比轻量级锁效率高很多轻量级锁比重量级锁效率高锁的标志和锁的释放没有关系...原创 2019-09-20 22:34:27 · 164 阅读 · 0 评论 -
2019.7.9笔记——java线程并发相关
应用synchronized的基本应用1.锁的是类的实例或者类的字节码而不是对象的引用如果synchronized关键字加在了方法前,含义和锁this是一样的,下面两端代码含义是一致的。2.手动上锁,自动释放3.不要用常量当锁,容易发生死锁下面两个string引用的是同一个字符串,所以如果认为是两把锁的话会出现问题,所以尽量不要用常量当锁。public class Demo2 ...原创 2019-09-20 22:33:04 · 84 阅读 · 0 评论 -
2019.7.4笔记——java线程并发相关
hostpot----------jvm虚拟机java的线程和操作系统的线程是一一对应的jdk包括java库、c文件、jvmc文件pthread_create为linux系统开启线程的函数pthread_mutex_lock为linux操作系统实现锁总结: java 通过jvm hotspot作为代理,调用操作系统函数结论: java创建一个线程 = 操作系统一个线程...原创 2019-09-17 20:17:57 · 206 阅读 · 0 评论 -
2019.8.1笔记——java并发线程相关
JMMmesi硬件保证了缓存一致性编译优化才导致了java线程间所谓的“不可见”编译优化是java1.5之后happens-before原则happens-before原则如果一个操作happens-before另一个操作,那么第一个操作的执行结果将对第二个操作可见,而且第一个操作的执行顺序排在第二个操作之前。两个操作之间存在happens-before关系,并不意味着一定要按照ha...原创 2019-09-26 15:56:26 · 89 阅读 · 0 评论