05 2018 档案

摘要:一、概述 ThreadLocal应用场景很广,很多主流框架都使用到它。例如,Spring用它来管理数据库连接,每个线程获取的都是自己的数据库连接对象。 通常,我们使用ThreadLocal有两个目的: 1.用来隔离不同线程的变量,避免线程间互相干扰。 比如,我们系统每秒钟同时会有很多用户请求,每个请 阅读全文
posted @ 2018-05-29 17:41 静水楼台/Java部落阁 阅读(168) 评论(0) 推荐(0) 编辑
摘要:Java编程思想中有这样一句话: 当我们使用线程来同时运行多个任务时,可以通过使用锁(互斥)来同步两个任务的行为,从而使得一个任务不会干扰到另外一个任务,这解决的是线程间彼此干涉的问题,现在我们需要来解决线程间彼此协调的问题,也就是线程间通信问题。 其实我一直对线程间通信这个概念比较模糊,如果仅仅从 阅读全文
posted @ 2018-05-29 17:40 静水楼台/Java部落阁 阅读(3329) 评论(0) 推荐(0) 编辑
摘要:一、锁升级(JMV层优化) JavaSE6为了减少获得锁和释放锁带来的性能消耗,引入了“偏向锁”和“轻量级锁”,所以JavaSe6中锁共有4种状态,级别从低到高依次是:无锁状态,偏向锁状态,轻量级锁状态,和重量级锁状态。锁的状态会随着锁竞争的激烈程度的升级而升级。锁可以升级,但不能降级,这种只能升级 阅读全文
posted @ 2018-05-29 17:23 静水楼台/Java部落阁 阅读(377) 评论(0) 推荐(0) 编辑
摘要:一、String 1、String概述 String代表字符串,Java中的所有字符串字面量都是它的实例,如"abc"。String对象是不可变的,一旦创建就不可以再被更改。String被设计为final的,是因为其设计者不希望String被继承而遭到更改。 在不同的JDK版本中,String类的实 阅读全文
posted @ 2018-05-22 16:38 静水楼台/Java部落阁 阅读(133) 评论(0) 推荐(0) 编辑
摘要:一、Integer类的缓存机制 我们查看Integer的源码,就会发现里面有个静态内部类。 public static Integer valueOf(int i) { assert IntegerCache.high >= 127; //当前值在缓存数组区间段,则直接返回该缓存值 if (i >= 阅读全文
posted @ 2018-05-16 11:28 静水楼台/Java部落阁 阅读(8174) 评论(0) 推荐(2) 编辑
摘要:尽管Object类是一个具体的类,但是设计它主要是为了扩展。它所有的非final方法,如equals、hashCode、toString、clone和finalize都有明确的通用约定,因为它们被设计为要覆盖(override)的。任何一个类,在覆盖这些方法时,都必须遵守各自的约定,否则,其它依赖于 阅读全文
posted @ 2018-05-15 17:44 静水楼台/Java部落阁 阅读(273) 评论(0) 推荐(0) 编辑
摘要:从应用程序的角度来看,线程安全问题的产生是由于多线程应用程序缺乏某种保障——线程同步机制。从广义上来说,Java平台提供的线程同步机制包括锁、volatile关键字、final关键字、static关键字以及一些相关的API,如Object.wait()/Object.nofity()等。 一、锁的概 阅读全文
posted @ 2018-05-14 15:07 静水楼台/Java部落阁 阅读(980) 评论(0) 推荐(0) 编辑