同步方法
访问修饰符 synchronized 返回类型 方法名(参数列表){……}
synchronized就是为当前的线程声明一把锁
同步代码块
synchronized(syncObject){ //需要同步的代码 }
多个线程访问同一个资源的同步代码块时的注意事项?
同一时刻只能有一个线程进入synchronized(this)同步代码块
当一个线程访问一个synchronized(this)同步代码块时,其他synchronized(this)同步代码块同样被锁定
当一个线程访问一个synchronized(this)同步代码块时,其他线程可以访问该资源的非synchronized(this)同步代码
线程安全的类型
常见类型对比
Hashtable && HashMap
Hashtable 继承关系:实现了Map接口,Hashtable继承Dictionary类 线程安全,效率较低 键和值都不允许为nulll
HashMap 继承关系:实现了Map接口,继承AbstractMap类 非线程安全,效率较高 键和值都允许为nul
StringBuffer && StringBuilder
前者线程安全,后者非线程安全



