zoukankan      html  css  js  c++  java
  • java 几种锁实现

    public class SyncronizedTest {
    
        private int value = 1;
        private AtomicInteger value1 = new AtomicInteger(1);
        private Lock lock = new ReentrantLock();
    
        //sycronized
        public synchronized int getValue() {
            return value ++ ;
        }
    
        //jdk自带原子操作
        public int getValue1() {
            return value1.getAndIncrement();
        }
    
        //lock
        public int getValue2() {
            lock.lock();
            int a = value ++ ;
            lock.unlock();
            return a;
        }
    
        public static void main(String[] args) {
    
            //此处必须使用同一个实例对象,因为synchronized锁此处针对的是对象,如果实例化2个对象相当于每个对象有一把锁
            SyncronizedTest syncronizedTest = new SyncronizedTest();
            long startTime = System.currentTimeMillis();
    
            Runnable runnable = () -> {
                for(int i = 0; i < 100; i ++){
                    System.out.println(Thread.currentThread().getName() + ",值:" + syncronizedTest.getValue());
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            Thread thread1 = new Thread(runnable);
            thread1.start();
            Thread thread2 = new Thread(runnable);
            thread2.start();
            Thread thread3 = new Thread(runnable);
            thread3.start();
            Thread thread4 = new Thread(runnable);
            thread4.start();
            Thread thread5 = new Thread(runnable);
            thread5.start();
    
            while (thread1.isAlive() || thread2.isAlive() || thread3.isAlive() || thread4.isAlive() || thread5.isAlive()) {
                //自旋
            }
            long endTime = System.currentTimeMillis();
            System.out.println("耗时:"+ (endTime - startTime));
        }
    }

    性能对比说明:https://www.cnblogs.com/flying607/p/5733043.html

  • 相关阅读:
    11.26
    11.25
    11.24
    11.23
    11.22
    11.21
    11.20
    3.16结对作业1.2
    3.14结对作业1.0
    3.13Android学习
  • 原文地址:https://www.cnblogs.com/gyli20170901/p/10873777.html
Copyright © 2011-2022 走看看