第16章 多线程 16.1 线程概述 16.1.1 线程和进程 16.1.2 多线程的优势 16.2 线程的创建和启动 16.2.1 继承Thread类创建线程类 16.2.2 实现Runnable接口创建线程类 16.2.3 使用Callable和Future创建线程 16.2.4 创建线程的三种 ...
分类:
编程语言 时间:
2019-03-20 11:48:37
阅读次数:
200
相信很多中高级的 Java 面试者都遇到过这个问题,很多对这个不是很清楚的肯定是一脸蒙逼。内心肯定还在质疑,i++ 居然还有线程安全问题?只能说自己了解的不够多,自己的水平有限。 先来看下面的示例来验证下 i++ 到底是不是线程安全的。 1000个线程,每个线程对共享变量 count 进行 1000 ...
分类:
编程语言 时间:
2019-03-20 01:08:43
阅读次数:
137
1.线程概述 2.线程实现(2种方式) 2.1通过Thread子类实现(Run方法、Start方法) 2.2通过Runnable接口实现(Thread(Runnable target)) 方便实现线程共享 2.3 Thread和Runnable的区别 继承Thread类创建线程由于java的单重继承 ...
分类:
编程语言 时间:
2019-03-18 13:28:05
阅读次数:
169
java线程状态在Thread中定义,源码中能看到有个枚举State,总共定义了六种状态: NEW: 新建状态,线程对象已经创建,但尚未启动 RUNNABLE:就绪状态,可运行状态,调用了线程的start方法,已经在java虚拟机中执行,等待获取操作系统资源如CPU,操作系统调度运行。 BLOCKE ...
分类:
编程语言 时间:
2019-03-15 01:00:44
阅读次数:
178
题目:打印是one还是two 第一张情况:两个普通同步方法,打印结果是 OneTwo 第二种情况:在getOne方法中新增一个Thread.sleep()调用,打印结果 OneTwo 第三种情况:在Number类中新增一个普通方法,打印结果 ThreeOneTwo 第四种情况:两个普通同步方法,两个 ...
分类:
编程语言 时间:
2019-03-13 12:03:39
阅读次数:
136
在Java中比较常见的两种创建线程的方法:继承Thread类和实现Runnable接口。但是这两种方法有个缺点就是无法获取线程执行后的结果。所以Java之后提供了Future和Runnable接口,用于实现获取线程执行结果。下面开始源码分析:1、Callable接口publicinterfaceCallable<V>{//返回接口,或者抛出异常Vcall()throwsExceptio
分类:
其他好文 时间:
2019-03-11 10:34:09
阅读次数:
196
目录: 1. 进程和线程 2. 为什么使用多线程? 3. 多线程的创建方式 4. Runnable与Thread两种方式比较 5. start()与run()方法 6. 线程的生命周期/状态转换 7. 常用方法使用与解读 8. 线程的优先级 9. 守护线程 1、进程和线程 进程(Process)是计 ...
分类:
编程语言 时间:
2019-03-04 22:37:45
阅读次数:
236
总述 & 160;& 160;& 160;& 160;最近做了一个日志调用链路跟踪的项目,涉及到操作标识在线程和子线程,线程池以及远程调用之间的传递问题。最终采用了阿里开源的 插件()完美解决。在分析源码以及中途修复bug的过程中,被 搞得晕头转向。好在静下心来细细啃了一下午,终于能理解各种 相关问 ...
分类:
其他好文 时间:
2019-03-02 18:38:05
阅读次数:
191
一、线程的生命周期 1、线程的5种状态:新建(New),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead) 2、线程的生命周期图解:(参考传智播客刘意2015Java基础视频讲义) 二、线程的状态转换图 1、线程的5种状态:新建(New),就绪(Runnabl ...
分类:
编程语言 时间:
2019-03-02 15:59:04
阅读次数:
339
class DeadLock implements Runnable { public int flag = 1; static Object o1 = new Object(), o2 = new Object(); @Override public void run() { System.out... ...
分类:
其他好文 时间:
2019-03-01 12:23:41
阅读次数:
151