多线程 线程:实现多任务的另一种方式 一个进程中,也经常需要同时做多件事,就需要同时运行多个‘子任务’,这些子任务,就是线程 线程又被称为 轻量级进程 (lightweight process),是更小的执行单元 一个进程可拥有多个并行的(concurrent)线程,当中每一个线程,共享当前进程的资 ...
分类:
编程语言 时间:
2020-01-26 20:50:08
阅读次数:
82
CAS是什么? CAS的全称为Compare And Swap它是一条CPU并发原语,也就是在CPU硬件层面上来说比较并且判断是否设置新值这段操作是原子性的,不会被其他线程所打断。在JAVA并发包java.util.concurrent.atomic下底层所采用的就是利用CAS机制来避免进行并发计算 ...
分类:
编程语言 时间:
2020-01-24 00:32:08
阅读次数:
122
文章目录 线程生命周期的开销:线程比较少的情况使用new Thread(task)无多大影响,但是如果涉及到线程比较多的情况,应用的性能就会受到影响,如果jdbc创建连接一样,new Thead创建线程也会耗资源、耗时间的。资源的消耗量:活动线程会消耗系统性能,如果运行的线程数量多余可用的处理器数,... ...
分类:
其他好文 时间:
2020-01-23 18:16:47
阅读次数:
80
Java并发编程小总结:CountDownLatch、CyclicBarrier和Semaphore这几个类都是在JUC下,也就是java.util.concurrent包下。这两天学习了一下并发编程中的三个类的使用和一些应用场景,所以做一下记录和总结,方便自己日后再查看复现。 1、CountDow ...
分类:
编程语言 时间:
2020-01-21 18:18:45
阅读次数:
99
如何获取线程池ThreadPoolExecutor正在运行的线程?这里有两种方法,如下代码: package com.itbac.thread; import java.util.HashSet; import java.util.Set; import java.util.concurrent.* ...
分类:
编程语言 时间:
2020-01-19 00:26:34
阅读次数:
373
阻塞队列BlockingQueue是一个接口,基于ReentrantLock ,依据它的基本原理,我们可以实现Web中二段长连接聊天功能,当然其最常用的还是用于实现生产者和消费者模式: BlockingQueue接口提供了以下方法: package java.util.concurrent; imp ...
分类:
其他好文 时间:
2020-01-18 18:03:07
阅读次数:
113
1.增加并发: 默认scrapy开启的并发线程为32个,可以适当进行增加。在settings配置文件中修改CONCURRENT_REQUESTS = 100值为100,并发设置成了为100。 2.降低日志级别: 在运行scrapy时,会有大量日志信息的输出,为了减少CPU的使用率。可以设置log输出 ...
分类:
其他好文 时间:
2020-01-18 01:01:04
阅读次数:
82
目录 一、J.U.C 简介 二、synchronized 三、volatile 四、CAS 五、ThreadLocal 参考资料 📦 本文以及示例源码已归档在 javacore 一、J.U.C 简介 Java 的 java.util.concurrent 包(简称 J.U.C)中提供了大量并发工具 ...
分类:
编程语言 时间:
2020-01-16 12:48:31
阅读次数:
76
Semaphore的作用:限制线程并发的数量 位于 java.util.concurrent 下, 构造方法 // 构造函数 代表同一时间,最多允许permits执行acquire() 和release() 之间的代码。 public Semaphore(int permits) { sync = ...
分类:
其他好文 时间:
2020-01-16 00:48:53
阅读次数:
66
1.引子 Lock接口的主要实现类ReentrantLock 内部主要是利用一个Sync类型的成员变量sync来委托Lock锁接口的实现,而Sync继承于AbstractQueuedSynchronizer,且大多数java.util.concurrent包下的并发工具类都是利用AbstractQu ...
分类:
编程语言 时间:
2020-01-14 00:07:19
阅读次数:
99