文章目录 摘要 park.unpark 看一下hotspot实现 参考 你的鼓励也是我创作的动力 Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 摘要 本文主要介绍park.unpark的功能以及hotspot实现原理,为下一篇介绍ReentrantLock做铺垫! park.unpark LockSupport类是Java6引入的一个类,提供了基本的线程同步原语.LockSupp…
文章目录 摘要 volatile的作用 volatile如何解决线程可见? CPU Cache CPU Cache & 主内存 缓存一致性协议 volatile如何解决指令重排序? volatile 字节码标记 volatile 虚拟机规范 volatile DCL单例需不需要加volatile? 参考 你的鼓励也是我创作的动力 Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 摘要…
文章目录 摘要 CAS是什么? CAS是如何实现的? CAS存在的问题? 你的鼓励也是我创作的动力 Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 摘要 本文从CAS的基本操作开始,逐步探究CAS的实现原理,本文涉及代码使用JDK1.8版本: CAS是什么? CAS是Compare And Swap (Compare And Exchange) 的简称,从因为的意思也很容易理解:比…
Posted by 微博@Yangsc_o 原创文章,版权声明:自由转载-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0 文章目录 摘要 synchronized的基础用法 synchronized原理 字节码理解 认识 Java Monitor Object 代码验证 虚拟机实现原理 一个对象的内存布局 对象头 对象实际数据 对齐填充 对象头占用空间大小 指针压缩 什么是OOP? 启用指针压缩 测试验证 偏向锁的撤销 重量级锁 锁消除 lock eli…
一.前言 在多线程的场景下,我们会经常使用加锁,来保证线程安全.如果锁用的不好,就会陷入死锁,我们以前可以使用Object的wait/notify来解决死锁问题.也可以使用Condition的await/signal来解决,当然最优还是LockSupport的park/unpark.他们都是解决线程等待和唤醒的.下面来说说具体的优缺点和例子证明一下. 二.wait/notify的使用 1. 代码演示 public class JUC { static Object lock = new Obje…
最近事情比较多,有预研的,有目前正在研发的,都是很需要时间的工作,所以导致这周只写了两篇Orchard系列的文章,这边不能保证后期会很频繁的更新该系列,但我会写完这整个系列,包括后面会把正在研发的东西跟大家一起分享(架构.思想上的分享). 今天我们来看一看Orchard中的Logging Component. 日志在Orchard中的使用 像这样的代码大家在Orchard中肯定经常见到,那么NullLogger.Instance是什么?大量使用依赖注入的Orchard会把真正的日志记录器放在一个…
关于Orchard中的Caching组件已经有一些文章做了介绍,为了系列的完整性会再次对Caching组件进行一次介绍. 缓存的使用 在Orchard看到如下一段代码: 可以看到使用缓存的方法Get而看不到以前常见的缓存方法:Add\Set\Remove,是不是很神奇. 其实也不是那么的神奇,Get方法中根据传入的Key(culture)在缓存数据存储中搜索,如果存在则直接返回缓存结果,如果不存在则执行传入的委托,并把委托返回的结果放入到缓存中. 那么怎么确保缓存是不是失效呢?难道不支持吗? O…
之前承诺过针对Orchard Framework写一个系列.本应该在昨天写下这篇导航篇,不过昨天比较累偷懒的去玩了两盘单机游戏哈哈.下面进入正题. 写在前面 面向读者 之前和本文一再以Orchard Framework为Title,其实只是因为本人没有用Orchard开发过实际的东西,只是研究了它Fraemwork层面的东西和极少部分的Module,Framework中也有一些没有研究或极少的研究,比如:Content,Display,Indexing,Messaging等,如果大家想了解这方面…
原文:Learning Cocos2d-x for WP8(2)--深入刨析Hello World cocos2d-x框架 在兄弟篇Learning Cocos2d-x for XNA(1)——小窥cocos2d-x框架中已有详细介绍cocos2d-x框架下的基本元素.可自行参考学习,概念的东西基本一样. HelloWorld HelloWorld程序虽然简单,但能测试程序是否能正确的运行,同时很能体现一个框架的整体结构. cocos2d-x中HelloWorld显示主要通过AppDelegat…
1.使用LockSupport的part/unpark实现 package com.ares.thread; import java.util.concurrent.locks.LockSupport; public class WaitAndNotifyDemo { public static void main(String[] args) { MThread myThread = new MThread(Thread.currentThread()); myThread.start();…