转自:http://www.cnblogs.com/skywang12345/p/3509954.html 概要 在前面一章"Java多线程系列--“JUC线程池”02之 线程池原理(一)"中介绍了线程池的数据结构,本章会通过分析线程池的源码,对线程池进行说明。内容包括: 线程池示例 参考代码(基于 ...
分类:
编程语言 时间:
2018-11-11 11:43:54
阅读次数:
788
转自:http://www.cnblogs.com/skywang12345/p/3509960.html 本章介绍线程池的生命周期。在"Java多线程系列--“基础篇”01之 基本概念"中,我们介绍过,线程有5种状态:新建状态,就绪状态,运行状态,阻塞状态,死亡状态。线程池也有5种状态;然而,线程 ...
分类:
编程语言 时间:
2018-11-11 11:41:26
阅读次数:
135
1. 线程让步: yield() yield()的作用是让步。它能让当前线程由“运行状态”进入到“就绪状态”,从而让其它具有相同优先级的等待线程获取执行权;但是,并不能保证在当前线程调用yield()之后,其它具有相同优先级的线程就一定能获得执行权;也有可能是当前线程又进入到“运行状态”继续运行! ...
分类:
编程语言 时间:
2018-11-10 17:58:40
阅读次数:
304
AtomicLong简要介绍 AtomicLong是作用是对长整形进行原子操作,显而易见,在java1.8中新加入了一个新的原子类LongAdder,该类也可以保证Long类型操作的原子性,相对于AtomicLong,LongAdder有着更高的性能和更好的表现,可以完全替代AtomicLong的来 ...
分类:
编程语言 时间:
2018-11-10 01:01:56
阅读次数:
237
private ThreadPoolExecutor threadPoolExecutor; /** * 获取线程池 * @return */ private ThreadPoolExecutor getThreadPoolExecutor(){ if(threadPoolExecutor != n... ...
分类:
编程语言 时间:
2018-11-09 16:12:27
阅读次数:
177
1.几个基本的概念 进程(Process): 一个程序运行起来时在内存中开辟一段空间用来运行程序,这段空间包括heap、stack、data segment和code segment。例如,开一个QQ就表明开了一个QQ进程。 线程(Thread): 每个进程中都至少有一个线程。线程是指程序中代码运行 ...
分类:
编程语言 时间:
2018-11-09 00:52:42
阅读次数:
198
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域,如图: 1.程序计数器 可以看作是当前线程所执行的字节码的行号指示器,通俗的讲就是用来指示执行哪条指令的。为了线程切换后能恢复到正确的执行位置 Java多线程是通过线程轮流切换并分配处理器执行的,为了能够使得每个线 ...
分类:
编程语言 时间:
2018-11-08 00:13:32
阅读次数:
220
Java多线程开发中最重要的一点就是线程安全的实现了。所谓Java线程安全,可以简单理解为当多个线程访问同一个共享资源时产生的数据不一致问题。为此,Java提供了一系列方法来解决线程安全问题。 synchronized synchronized用于同步多线程对共享资源的访问,在实现中分为同步代码块和 ...
分类:
编程语言 时间:
2018-11-07 14:04:26
阅读次数:
228
这一系列的文章暂不涉及Java多线程开发中的底层原理以及JMM、JVM部分的解析(将另文总结),主要关注实际编码中Java并发编程的核心知识点和应知应会部分。 说在前面,Java并发编程的实质,是线程对象调用start方法启动多线程,而线程对象则必须是Thread类或其子类实现。Runnable和C ...
分类:
编程语言 时间:
2018-11-06 13:38:07
阅读次数:
270
多线程的实现方式:demo1、demo2 demo1:继承Thread类,重写run()方法 demo2:实现runnable接口,实现run()方法 demo3:两种方法解决进程赛跑问题 ...
分类:
编程语言 时间:
2018-11-05 22:50:19
阅读次数:
269