
Java系统学习
追逐蓦然
一步一个脚印
展开
-
Java系列课----高性能编程专题----线程通信(一)
CPU缓存和内存屏障通信方式线程协作suspend和resume首先先写正确的代码死锁情况同步代码中使用suspend比resume后执行通信方式要想实现多个线程之间的协同,如:线程执行先后顺序,获取某个线程执行的结果等等.涉及到线程之间相互通信,分为下面四类:1.文件共享2.网络共享3.共享变量4.jdk提供的线程协调api细分为:suspend/resume wait/not...原创 2019-03-25 19:42:10 · 173 阅读 · 0 评论 -
Java系列课----高性能编程专题----线程通信(二)
CPU缓存和内存屏障承上启下wait/notify机制产生死锁情况park/unpark机制产生死锁情况承上启下上篇博客介绍了现在JDK弃用的api,这篇博客介绍现在使用的两种apiwait/notify机制这些方法只能由(同一对象锁)的持有者线程调用,也就是卸载同步块里面,否则会抛出IllegalMonitorStateException异常。一定要在同步代码段wait方法导致当...原创 2019-03-26 09:55:35 · 179 阅读 · 0 评论 -
Java系列课----高性能编程专题----Java程序运行原理分析
Java程序运行原理分析class文件内容JVM运行时数据区新名词的解释线程共享部分与线程独占部分:方法区:推内存虚拟机机栈本地方法栈程序计数器接下来我们来做一个demo来真正的理解JVM运行原理class文件内容class文件包含Java程序执行的字节码;数据(虚拟机)严格按照格式紧凑排列在class文件中的二进制流,中间无任何分隔符;文件开头有一个0xcafebabe(16进制)特殊的一...原创 2019-03-22 19:55:38 · 403 阅读 · 0 评论 -
Java系列课----高性能编程专题----线程状态
线程状态线程状态NewRunnableBlockedWaitingTimed WaitingTerminated线程各个状态之间的关系图接下来我们来做一个demo来真正的理解线程状态第一种情况下的运行结果第二种情况下的结果第三种情况的结果线程状态在java.lang.Thread.State中,有6种状态定义New尚未启动的线程的线程状态Runnable调用start,可运行...原创 2019-03-23 14:09:25 · 185 阅读 · 0 评论 -
Java系列课----高性能编程专题----线程中断
线程中断错误的线程中断正确的线程中断方式方式一 interrupt方式二 标志位错误的线程中断首先我们先介绍一种错误的线程中断不正确的线程中止 ————StopStop:中止线程,并且清楚监控器锁的信息,但是可能导致线程安全问题,JDK不建议用。Destroy:JDK未实现该方法现在我们都一个demo来说明stop导致线程安全问题package demo2;publ...原创 2019-03-23 16:51:01 · 222 阅读 · 0 评论 -
Java系列课----高性能编程专题----线程封闭
线程封闭概念ThreadLocal栈封闭概念多线程访问共享可变数据时,涉及到线程安全,线程间数据同步的问题。并不是所有时候,都要用到共享数据,所以线程封闭概念就提出来了数据都被封闭在各自的线程之中,就不需要同步,这种通过将数据封闭在线程中而避免使用同步的技术称为线程封闭。这里有两种方式来使用线程封闭:ThreadLocal和栈封闭ThreadLocal它是一个线程级别变量,每个线...原创 2019-03-26 19:08:40 · 176 阅读 · 0 评论 -
Java系列课----高性能编程专题----CPU缓存和内存屏障
CPU缓存和内存屏障CUP性能优化手段手段一----------缓存缓存L1 CacheL2 CacheL3 Cache处理顺序MESI协议手段二---------运行时指令重排两个问题问题一问题二内存屏障写内存屏障读内存屏障CUP性能优化手段手段一----------缓存为了提高程序运行的性能,现代CPU在很多方面对程序进行了优化例如:CPU高速缓存,尽可能地避免处理器访问主内存的时间...原创 2019-03-24 15:24:06 · 587 阅读 · 0 评论