当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么他永远被阻塞,当线程A持有锁L并想获得锁M的同时,线程B持有锁M并同时尝试获得锁L时,那么两个线程将永远的等待下去,这中情况就是简单的死锁的形式,其中多个线程由于存在环路的锁依赖关系而永远的等待下去,那么就存在一个死锁。 1、锁顺序死锁 ...
分类:
编程语言 时间:
2018-03-04 16:03:27
阅读次数:
242
来源于《Java多线程编程核心技术》 一、join() 作用 在很多情况,主线程创建并启动子线程,如果子线程中需要进行大量的耗时计算,主线程往往早于子线程结束。这时,如果主线程想等待子线程执行结束之后再结束,比如子线程处理一个数据,主线程要取得这个数据,就要用待jion() 方法。 方法join() ...
分类:
其他好文 时间:
2018-03-03 17:04:17
阅读次数:
220
java多线程编程中,存在很多线程安全问题,至于什么是线程安全呢,给出一个通俗易懂的概念还是蛮难的,如同《java并发编程实践》中所说: 写道 给线程安全下定义比较困难。存在很多种定义,如:“一个类在可以被多个线程安全调用时就是线程安全的”。 静态变量:线程非安全。 静态变量即类变量,位于方法区,为 ...
分类:
编程语言 时间:
2018-03-02 18:45:02
阅读次数:
291
Future接口介绍 Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。 Future 一般由 ExecutorService 的submit()、invokeAll()方法返回的,用于跟踪、获取任务 ...
分类:
其他好文 时间:
2018-03-01 21:53:24
阅读次数:
193
CompletionService 接口是一个独立的接口,并没有扩展 ExecutorService 。 其默认实现类是ExecutorCompletionService ; 接口 CompletionService 的功能是:以异步的方式一边执行未完 ...
分类:
其他好文 时间:
2018-03-01 21:53:11
阅读次数:
173
线程的六种状态 1.新建状态 new了但是没有启动的线程的状态,如“Thread thread = new Thread()”,thread就是一个处于新建状态的线程。 2.运行状态 new出来的线程,调用strat()方法即处于入运行状态(Runnable),处于运行状态的线程可能正在Java虚拟 ...
分类:
编程语言 时间:
2018-03-01 21:52:56
阅读次数:
140
Executors 简介 Executors 是一个工厂类,其提供的是Executor、ExecutorService、ScheduledExecutorService、ThreadFactory 和 Callable 类的实例的工厂方法; 提供常用配置的 ExecutorService、Sched ...
分类:
其他好文 时间:
2018-03-01 21:41:39
阅读次数:
182
一、Future Future和Callable基本是成对出现的,Callable负责产生结果,Future负责获取结果。 1、Callable接口类似于Runnable,只是Runnable没有返回值。 2、Callable任务除了返回正常结果之外,如果发生异常,该异常也会被返回,即Future可 ...
分类:
编程语言 时间:
2018-03-01 19:53:01
阅读次数:
206
1、返回当前线程的名称:Thread.currentThread.getName(); 2、Thread的名称由Thread+编号定义,编号从0开始 3、线程要运行的代码统一都放到了run方法下面 4、线程要运行必须要通过类中指定的方法开启。Start()(启动后就多了一条执行路径) 注意:star ...
分类:
编程语言 时间:
2018-03-01 17:21:56
阅读次数:
245