本文共 563 字,大约阅读时间需要 1 分钟。
多个线程访问同一个对象时,需要用到线程同步,线程同步的本质是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再使用。
由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来了访问冲突的问题。为了保证数据在方法中被访问时的正确性,在访问时加入锁机制(synchronized),当一个线程获得对象的排它锁,独占资源,其他线程必须等待,使用后释放锁即可。存在以下问题:
synchronized方法、synchronized块
synchronized方法:控制对“成员变量|类变量”对象的访问,每个对象对应一把锁,每个synchronized方法都必须获得调用该方法的对象的锁方能执行,否则所属线程阻塞,方法一旦执行,就独占锁,知到方法返回锁释放,被阻塞的其它线程才能获得该锁,重新进入执行状态。
synchronized块:限制一个代码块,使用synchronized尽量要使得粒度最小,这样才能提高效率
转载地址:http://trdyk.baihongyu.com/