1. 线程池作用
more >>销毁和创建线程的代价大,频繁地销毁和创建线程会降低系统性能并且占用CPU,而CPU的主要功能是负责解决业务问题,所以线程池能帮助系统更好地专注于业务而不是辅助功能上。
ThreadLocal提供了线程局部变量,每个线程都有各自独立的局部变量,其他线程无法访问得到,这就隔离多个线程之间的资源共享问题,也不会出现线程安全问题,而一般应用是在数据库连接,或者session等地方。
more >>
BlockingQueue是阻塞队列,适用于生产者消费者模式,特性是在移除元素和加入元素时,遇到空队列和满队列会做出相应的阻塞操作。
在空队列时,使用移除(take)会先阻塞线程,等待元素添加进来才唤醒移除线程实现移除功能
在满队列时,使用加入(put)会先阻塞线程,等待元素移除一个后才唤醒添加线程实现添加功能
more >>
AQS全名是AbstractQueuedSynchronizer,是JUC(java并发包)的一个同步工具类,是很多并发类的基础,比如ReentrantLock,CountDownLatch,ReentrantReadWriteLock等都是继承AQS,然后再自己实现相应的tryAcquire和tryRelease方法的,所以了解AQS的原理以及结构有助于了解其他并发类。
more >>
CountDownLatch是一个同步工具类,允许一个或多个线程等待其他线程操作完成后才执行,比如生活中炒菜的例子,要炒菜之前,得准备好油盐酱醋,切好菜,准备好工具,等待这些工作做完了,才可以真的炒菜,用线程方式表示就是
more >>线程A : 炒菜
线程B : 酱料准备
线程C : 切菜
线程D : 工具
当线程B,C,D操作完成,线程A才会执行,CountDownLatch就是实现这种需求的工具类。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true