多线程关键字

synchronized关键字

synchronized能使代码块或者方法同步,synchronized修饰的代码块或者方法具有原子性

使用方法

  • 修饰代码块,作用于代码块,锁的传入对象的锁
sychronized (obj) {
    for (int i = 0; i < 100; i++)
        System.out.println(i)
}
  • 修饰方法,作用于整个方法,锁的是本对象
  • 修饰静态方法,作用于整个静态方法,锁的是所有该类的对象
  • 修饰类,作用于类的所有方法,锁所有 对象

volatile关键字

volatile关键修饰的变量最大的作用是每次线程读取的该值都是最新的

volatile关键字并不具有原子性

比如两个线程同时读取volatile修饰的变量i时,读到i的最新值都是5,然后两个线程对i进行自增,自增后i的值是6,但理论应该是7

猜你喜欢

转载自www.cnblogs.com/zhz-8919/p/10806022.html