一、Java 线程池 Java通过Executors提供四种线程池,分别为:1、newCachedThreadPool: 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。(线程最大并发数不可控制)2、newFixedThreadPool: 创建一个定长线 ...
分类:
其他好文 时间:
2018-10-16 12:02:30
阅读次数:
127
一.进程和线程的区别: 进程:当前计算机正在运行的程序,进程是cpu分配资源的基本单位,一个进程至少有一个线程。 线程: 计算机中任务调度和最小的执行单元,一个线程也被称为轻量级进程。 Java多线程:在单个程序运作的过程中同时运作多个线程,完成不同的工作,称为多线程。 引入线程的好处:Java虚拟 ...
分类:
编程语言 时间:
2018-10-16 01:42:46
阅读次数:
219
Executor 和 ThreadPoolExecutor 实现的是线程池,主要作用是支持高并发的访问处理。 Executor 是一个接口,与线程池有关的大部分类都实现了此接口。 ExecutorService 是 Executor 的子接口;AbstractExecutorService 是 Ex ...
分类:
编程语言 时间:
2018-10-15 14:33:44
阅读次数:
177
一.什么是多线程 在说线程之前,我们先简单说一下什么是进程。进程就是当前计算机中正在运行的程序, 而线程是计算机中最小的的执行单元。 需要注意的是每一个进程中至少包含一个线程。一个进程中一般包含多个线程。 例如我们在电脑中运行一个电脑管家程序,那么正在运行的这个程序(电脑管家)就是一个进程, 而其中 ...
分类:
编程语言 时间:
2018-10-14 23:02:30
阅读次数:
190
两种线程的调度模式: 抢占式调度: 抢占式调度指的是每条线程执行的时间、线程的切换都由系统控制,系统控制指的是在系统某种运行机制下,可能每条线程都分同样的执行时间片,也可能是某些线程执行的时间片较长,甚至某些线程得不到执行的时间片。在这种机制下,一个线程的堵塞不会导致整个进程堵塞。 协同式调度: 协 ...
分类:
编程语言 时间:
2018-10-14 16:49:06
阅读次数:
125
示例代码: java import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class ThreadPoolTest { public static void main(S ...
分类:
编程语言 时间:
2018-10-14 14:12:45
阅读次数:
132
一.currentThread()方法 currentThread方法就是返回当前被调用的线程。 该方法为一个本地方法,原码如下: 可以看出他返回的是一个线程对象。 下面来看一个列子: 结果如下: 除了run方法是在一个被自动取名为Thread-0的线程中其他的两个都在main方法中。 但是我们不使 ...
分类:
编程语言 时间:
2018-10-13 16:48:36
阅读次数:
141
java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同《java并发编程实践》中所说: 写道 给线程安全下定义比较困难。存在很多种定义,如:“一个类在可以被多个线程安全调用时就是线程安全的”。 此处不赘述了,首先给出静态变量、实例变量、局部变量在多线 ...
分类:
编程语言 时间:
2018-10-13 14:37:22
阅读次数:
174
start()和run是Thread类里面的两个方法。 学过的都知道,我们创建了一个线程类,通过调用start()方法来启动线程,并且该线程会执行内部的run()方法,那么我们可以直接调用run()方法吗。 答案显而易见,当然是可以啊,可是前后两者还是有本质的区别的。 start()和run() 调 ...
分类:
编程语言 时间:
2018-10-12 17:51:31
阅读次数:
163
线程对象在不同时期有不同的状态,该状态信息存在于Thread.State这个枚举类中 截图自JDK1.8的API 截自《Java多线程编程核心技术》 ...
分类:
编程语言 时间:
2018-10-11 11:28:24
阅读次数:
121