摘要: public class Example7 { public static void main(String[] args) { Thread newThread = new Thread(new Runnable() { @Override public void run() { while (t 阅读全文
posted @ 2016-02-01 15:53 PaganMonkey 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 守护线程与用户线程的区别只在于线程结束的时机。 执行以下代码,你会发现虽然daemonThread线程内部定义了一个死循环,但整个程序任然会在userThread执行完成之后不久自动退出。 public class Example6 { public static void main(String[ 阅读全文
posted @ 2016-02-01 14:55 PaganMonkey 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 1.这个方法使用键值作为锁对象,缩小了同步范围,提升了效率。 public <T> ServerBootstrap childOption(ChannelOption<T> childOption, T value) { if (childOption == null) { throw new Nu 阅读全文
posted @ 2016-02-01 11:12 PaganMonkey 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 1.内部锁 每个Java对象都可以隐式地扮演一个用于同步的锁的角色,这些内置的锁被称为内部锁或监视器锁。 获取锁:获取内部锁的唯一途径是,进入这个内部锁保护的同步块或方法。 退出锁:无论通过正常控制路径退出,还是从块中抛出异常,线程都在放弃对synchronized块的控制是自动释放锁。 2.互斥锁 阅读全文
posted @ 2016-02-01 11:00 PaganMonkey 阅读(201) 评论(0) 推荐(0) 编辑
摘要: Java提供了强制原子性的内置锁机制:synchronized块。一个synchronized块有两部分:锁对象的引用(作为锁的对象一定要是final的,保证锁对象不会被重新赋值),以及这个锁保护的代码块。 public class Example5 { final static Object lo 阅读全文
posted @ 2016-02-01 09:53 PaganMonkey 阅读(250) 评论(0) 推荐(0) 编辑
摘要: 1.volatile关键字 理解volatile的关键首先要理解处理器缓存和主存。 如果将一个域声明为volatile,那么只要对这个域产生了写操作,那么所有读操作都可以看到这个修改,即volatile域的写操作会向主存刷新。 同步synchronized也会导致向主存中刷新,所以如果一个域完全由s 阅读全文
posted @ 2016-02-01 09:06 PaganMonkey 阅读(501) 评论(0) 推荐(0) 编辑

喜欢的话可以打赏一下哦!!!

支付宝

微信