读写锁
独占锁:一次只能被一个线程占有
共享锁。多个线程可以同时占有
class Apple{ public static void main(String[] args) { Mycache mycache=new Mycache(); for (int i = 0; i <5 ; i++) { final int temp=i; new Thread(()->{ mycache.put(temp+"",temp); }).start(); } for (int i = 0; i <5 ; i++) { final int temp=i; new Thread(()->{ mycache.get(temp+""); }).start(); } } } /*自定义缓存*/ class Mycache{ private volatile Map<String ,Object> map=new HashMap<>(); //读写所 private ReentrantReadWriteLock lock=new ReentrantReadWriteLock(); //存 取的时候 只希望同时只有一个线程写入 public void put(String key,Object value){ lock.writeLock().lock(); System.out.println(Thread.currentThread().getName()+"写入"+key); map.put(key,value); System.out.println(Thread.currentThread().getName()+"已写入"); lock.writeLock().unlock(); } //可以有多个读出 public void get(String key){ lock.readLock().lock(); System.out.println(Thread.currentThread().getName()+"读入"+key); map.get(key); System.out.println(Thread.currentThread().getName()+"已读入"); lock.readLock().unlock(); } }
线程池
程序的运行本质:占用系统的资源!优化资源的使用!=>池化技术
线程池、连接池、内存池、对象池//
程序的运行本质:占用系统的资源!优化资源的使用
池化技术:线程池、连接池、内存池、对象池