读写锁
独占锁:一次只能被一个线程占有
共享锁。多个线程可以同时占有

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();
}
}
线程池
程序的运行本质:占用系统的资源!优化资源的使用!=>池化技术
线程池、连接池、内存池、对象池//
程序的运行本质:占用系统的资源!优化资源的使用
池化技术:线程池、连接池、内存池、对象池



















