摘要:
使用线程池的原因 多线程是为了用来最大化发挥多核处理器的处理能力,但是线程是不能无限创建的,当线程创建太多时,反而会消耗CPU与内存资源。 线程的创建与销毁是需要时间的,假如一个线程的创建时间加上销毁时间还要远大于服务时间时,是得不偿失的;线程需要占用内存资源,大量线程的创建会占用宝贵内存资源,可以 阅读全文
摘要:
BlockingQueue BlockingQueue是并发容器的一种,在J.U.C的包路径下,是线程安全的一种实现,是基于阻塞队列的,该接口提供了相对于Queue的新的put()和take()操作。put()添加元素时,当阻塞队列满的情况下会阻塞下来,当有空间时才能进行添加操作,添加到队列尾部;t 阅读全文
摘要:
ConcurrentHashMap与HashMap的实现方法类似,不同的是它采用的是分段锁的思想支持并发的操作,它是线程安全的。 要了解ConcurrentHashMap,首先要了解Segment,一个Segment就相当于一个HashMap对象。与HashMap一样,Segment包含一个Hash 阅读全文
摘要:
公平性锁与非公平性锁 非公平性: 如果一个线程因为CPU时间全部被其他的线程抢走而无法获得CPU的执行时间,这种状态称之为饥饿,而该线程被称为“饥饿致死”,非公平锁就存在“饥饿”,因为线程得不到CPU的运行时间机会。 公平性: 所有的线程均能公平性的获取到执行的机会。 线程饥饿的原因: 高优先级的线 阅读全文
摘要:
Synchronized是独占锁,性能低,Lock借助JNI完成的高级锁实现。Lock接口实现的锁比synchronize的锁更加广泛,实现了更加灵活地操作,支持多个Condition对象。 Lock接口下提供的方法:void lock();void lockInterruptibly();cond 阅读全文
摘要:
在这之前要有搭建好maven的环境,可以参考上一篇。https://www.cnblogs.com/128-cdy/p/12604298.html 1。 2。选择Modules 3。 4。 等待一会选择,Download to可以不用勾选,下载的jar会放在本地的jar仓库里,如果勾选了则会在该项目 阅读全文
摘要:
maven最新版本3.6.3的下载 链接:https://pan.baidu.com/s/12LPKkiE0x_Aq4S8qUnYa6g 提取码:7njx 下载完成解压后可以进行环境变量的配置。 1。新建一个MAVEN_HOME的变量名。 2。找到Path,新建一个%MAVEN_HOME%\bin的 阅读全文
摘要:
该题目可以采用二分的思想,查找该元素。实现如下: private static String find(int[] arr,int num) { int left = 0; int right = arr.length - 1; while (left <= right){ if(num < arr 阅读全文
摘要:
该二维数组的特征是: a.每行中的整数从左到右按升序排列。 b.每行的第一个整数大于前一行的最后一个整数。 可以每行都进行二分查找(由于该数组的特征,所以可以先将要查找的数与本行的最后一个数据比较,若大于则直接进入下一行比较,增加效率,减少比较的次数),如果未找到则进入下一层,直到找完该二维数组。 阅读全文