ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

5.1

2022-05-05 11:01:30  阅读:182  来源: 互联网

标签:5.1 HashMap lock Collections new 线程 等待


1、RestTemplate:远程调用http接口

2、同步锁Synchronized:方法锁【抢票】(方法锁也是对象锁,方法一旦执行,就会独占该锁【写锁】,否则所属线程阻塞,可能会多个线程调用同一对象【结果非最新】)、对象锁【银行取钱】(在执行方法时,会确保对象有且只有一个线程调用)、类锁【手机打电话发短信】(对象模板锁,方法前加static synchronized)

3、可重复锁ReentrantLock:显示锁,手动开启/关闭,只有代码块锁,JVM花费较少时间调度线程,默认非公平(非公平才是最公平的)

优先级:Lock>同步代码块>同步方法

4、生产者消费者的2种方法:flag标志位、集合空满状态。 ①判断等待this.wait()  ②业务  ③通知this.notifyAll();

  虚假唤醒问题:唤醒条件不满足继续等待==>等待应该总出现在循环中(if->while)

5、生产者和消费者问题之Locked搭配监视器Condition监控线程调度:①判断等待condition.await()  ②业务  ③通知condition.signalAll()

几个线程互相通知就需要几个监视器互相告知。

6、集合安全:List ArrayList(扩容1.5,长度+长度>>1【÷2】)Set HashSet(底层HashMap,key不能重复)、Map HashMap(new HashMap(16,0.75f);初始化容量 capacity:1 << 4 (1*2^4)=16 ;最大值:加载因子:0.75f

Collections.synchronizedList(new ArrayList<>());   new CopyOnWriteArrayList<>();

Collections.synchronizedSet(set);  new CopyOnWriteArraySet();

Collections.synchronizedMap(map);  new ConcurrentHashMap<>();

7、三大辅助类:CountDownLatch(减法计算器)、CyclicBarrier(加法计算器)、Semaphore(信号量并发限流)

new CountDownLatch(6);//i=6   countDownLatch.countDown();//i--  countDownLatch.await();//阻塞等待,直到结果为0       核心代码在阻塞之后

new CyclicBarrier(7,()->{ runnable核心代码 });//i=7  cb.await();//等待,满了之后才执行开会

new Semaphore(3);//容量3  sp.acquire();//抢到资源   sp.release();//释放资源

8、读写锁: ReentrantReadWriteLock();   读锁(独占锁)lock.readLock().lock()【unlock】;、写锁(共享锁)lock.writeLock().lock()【unlock】

9、阻塞队列:BlockingQueue

标签:5.1,HashMap,lock,Collections,new,线程,等待
来源: https://www.cnblogs.com/xwdnd/p/16223934.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有