一、线程的实现1、线程的三种实现方式 首先并发并不是我们通常我们认为的必须依靠线程才能实现,但是在Java中并发的实现是离不开线程的,线程的主要实现有三种方式:使用内核线程(KernelThread,KLT)实现使用用户线程实现使用用户线程加轻量级进程混合实现 (1)使用内核线程(KernelThread,KLT)实现: 直接由OS(操作系统)内核(Kernel)支持的线程,程序中一般不
分类:
编程语言 时间:
2019-01-04 12:28:19
阅读次数:
186
[toc] 引出线程池 线程是并发编程的基础,前面的文章里,我们的实例基本都是基于线程开发作为实例,并且都是使用的时候就创建一个线程。这种方式比较简单,但是存在一个问题,那就是线程的数量问题。 假设有一个系统比较复杂,需要的线程数很多,如果都是采用这种方式来创建线程的话,那么就会极大的消耗系统资源。 ...
分类:
编程语言 时间:
2019-01-04 12:23:36
阅读次数:
200
ThreadPoolExecutor概述 ThreadPoolExecutor 下文简称 TPE ,我们使用它都是从Executror 这个类中的方法 : 1 public static ExecutorService newFixedThreadPool(int nThreads) { 2 ret... ...
分类:
编程语言 时间:
2018-12-30 20:32:29
阅读次数:
133
一、线程状态与生命周期 二、阻塞状态 如果一个线程执行了sleep(睡眠)、suspend(挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种: 等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状 ...
分类:
编程语言 时间:
2018-12-30 02:42:03
阅读次数:
188
Tomcat 的缺省配置是不能稳定长期运行的,也就是不适合生产环境,它会死机,让你不断重新启动,甚至在午夜时分唤醒你。对于操作系统优化来说,是尽可能的增大可使用的内存容量、提高CPU 的频率,保证文件系统的读写速率等。经过压力测试验证,在并发连接很多的情况下,CPU 的处理能力越强,系统运行速度越快 ...
分类:
其他好文 时间:
2018-12-29 14:32:52
阅读次数:
214
Synchronized和同步阻塞synchronized是jvm提供的同步和锁机制,与之对应的是jdk层面的J.U.C提供的基于AbstractQueuedSynchronizer的并发组件。synchronized提供的是互斥同步,互斥同步是指在多个线程并发访问共享数据时,保证共享数据在同一时刻 ...
分类:
编程语言 时间:
2018-12-28 21:11:40
阅读次数:
232
阅读前阅读以下参考资料,文章图片或代码部分来自与参考资料 概览 一张图了解一下java锁. 各种锁 为什么要设置锁的等级 jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。锁主要存在四中状态,依次是:无锁状态、偏向锁状态、轻量级... ...
分类:
编程语言 时间:
2018-12-28 20:46:34
阅读次数:
306
package cn.sasa.demo2; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class Test { public static void main... ...
分类:
编程语言 时间:
2018-12-27 18:59:57
阅读次数:
212
1. JDK命令行工具 - jstack jps -l 查询当前运行线程 jstack -[operation] pid 其中operation: -F:当 jstack pid没有响应时,使用-F强制dump线程信息 -m:打印java线程栈和本地线程栈 -l:长期监听, 打印锁信息 jstack ...
分类:
编程语言 时间:
2018-12-27 15:29:51
阅读次数:
179
Executor框架 在Java中,使用线程来异步执行任务。Java线程的创建与销毁需要一定的开销,如果我们为每一个任务创建一个新线程来执行,这些线程的创建与销毁将消耗大量的计算资源。同时,为每一个任务创建一个新线程来执行,这种策略可能会使处于高负荷状态的应用最终崩溃。 Java线程既是工作单元,也 ...
分类:
其他好文 时间:
2018-12-27 03:35:34
阅读次数:
206