栈限制
栈限制是线程限制的一种特例,在栈限制中,只能通过本地变量才可以触及对象。
ThreadLocal
一种维护线程限制的更加规范的方式是使用ThreadLocal,它允许你将每个线程与持有数值的对象关联在一起。
线程限制
相关约定
为了明确后文的描述,先对本文涉及到的锁的相关定义作如下约定:
- 类锁:在代码中的方法上加了static和synchronized的锁,或者synchronized(xxx.class)的代码段
2.对象锁:在代码中的方法上加了synchronized的锁,或者synchronized(this)的代码段
3.私有锁:在类内部声明一个私有属性如private Object lock,在需要加锁的代码段synchronized(lock)
基于限制性和锁,构造线程安全类。