乐观锁原理

乐观锁:一开始不上锁

认为是没有问题的,大家一起跑,

等要出现线程安全问题的时候才开始控制,线程安全,性能敦好

 
  
package tzTsr;

public class TzTest2 {
    public static void main(String[] args) {
        // 月标: 拓展悲观锁,乐观锁原理。
          // 悲观锁:一上来就加锁,没有安全感。每次只能一个线程进入访问完毕后,再解锁。 线程安全,性能较差!
        // 乐观锁:一开始不上锁,认为是没有问题的,大家一起跑,等要出现线程安全问题的时候才开始控制。线程安全,性能较好
        // 需求:1个静态变量,100个线程,每个线程对其加100次
/*

        Runnable Target=new MyRunnable();
        for (int i = 1; i <= 100; i++) {
            new Thread(Target).start();
        }
*/

        // 目标:拓展悲观锁,乐观锁原理。
        // 乐观锁:一开始不上锁,认为是没有问题的,大家一起跑,等要出现线程安全问题的时候才开始控制,线程安全,性能敦好//
        // 需求:1变量,10日个线翟,每个线程对其加100次。
        Runnable Target=new MyRunnable2();
        for (int i = 1; i <= 100; i++) {
            new Thread(Target).start();
        }
    }
}
package tzTsr;

import java.util.concurrent.atomic.AtomicInteger;

public class MyRunnable2 implements Runnable {


    /*private int count;
    @Override
    public void run() {
        for (int i = 0; i <100 ; i++) {

            synchronized (this) {
                System.out.println(Thread.currentThread().getName()+
                        "count=======>"+(++count));
            }
        }
    }*/

      // 整数改的乐观锁 原子类实现
    private AtomicInteger count=new AtomicInteger();
    @Override
    public void run() {
        for (int i = 0; i <100 ; i++) {

                System.out.println(Thread.currentThread().getName()+
                        "count=======>"+(+count.incrementAndGet()));

        }
    }

}
package tzTsr;

import javax.crypto.spec.PSource;

public class MyRunnable implements Runnable {
    private int count;
    @Override
    public void run() {
        for (int i = 0; i <100 ; i++) {
            synchronized (this) {
                System.out.println(Thread.currentThread().getName()+
                        "count=======>"+(++count));
            }
        }
    }
}

你可能感兴趣的:(java,jvm,开发语言)