
Thread
想你的夜713
谁的青春不迷茫我的青春我做主
展开
-
Java中常用的线程池
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2017-02-16 16:03:43 · 203 阅读 · 0 评论 -
ThreadLocal源码
/* * @(#)ThreadLocal.java 1.42 06/06/23 * * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */package java.lang;impo原创 2017-03-09 21:33:50 · 217 阅读 · 0 评论 -
定时器Timer
定时任务在Java中主要使用的就是Timer对象,它在内部还是使用多线程的方式处理,所以它和线程技术还有有非常大的关系。在JDK库中,Timer类主要负责计划任务的功能,也就是在指定的时间开始执行某一个任务。Timeter主要作用就是设置计划任务,但封装任务的类确实TimerTask类,执行计划任务的代码要放入TimerTask的子类中,因为TimerTask是一个抽象类。核心方法:s原创 2017-02-25 23:09:36 · 363 阅读 · 0 评论 -
单例模式和多线程
在标准的23中设计模式中单例模式是应用最多的。(1) 立即加载/饿汉模式立即加载就是使用类的时候已经将对象创建完毕,常见的实现方法就是直接new实例化。public class MyObject { // 单利模式饿汉模式 private static MyObject myObject = new MyObject(); private MyObject() {原创 2017-02-25 23:17:37 · 251 阅读 · 0 评论 -
线程状态切换
1) 新创建一个新的线程对象后,在调用它的start()方法,系统就会为此线程分配CPU的资源,是其处于Runnable(可运行)状态,这一个准备运行的阶段。若果线程强占到CPU资源,此线程就处于Running(运行)状态。2) Runnable状态和Running转态可相互切换,因为有可能线程运行一段时间后,有其它优先级的线程抢占到了CPU资源,这是线程就从Running原创 2017-02-23 23:03:47 · 390 阅读 · 0 评论 -
线程间通信
(1) 使用wait/notify实现线程间的通信Wait()方法的作用是:使当前执行代码的线程进行等待,是object类的一个方法,该方法用来将当前线程置入预执行队列中,并且在wait()所在的代码行处停止执行,知道接到通知或被中断为止。在调用wait()方法之前,线程必须获得该对象的对象级别的锁,即只能在同步方法或同步块中调用wait()方法。在执行wait()方法后,当前线原创 2017-02-23 23:00:32 · 236 阅读 · 0 评论 -
java中的并发工具类
(1) 等待多线程完成的CountDownLatch1) 定义:允许一个或者多个线程等待其他线程完操作。在jdk1.5后的并发包中提供了CountDownLatch也可以实现join的功能,并且比join的功能更多。2) 应用场景:我们需要解析一个Excel里多个sheet的数据,此时可以考虑使用多线程,每一个线程解析一个sheet里的数据,等到所有的sheet都解析完成之后原创 2017-03-02 22:41:18 · 278 阅读 · 0 评论 -
Java并发容器和框架
(1)ConcurrentHashMap的实现原理与使用 ConcurrentHashMap是线程安全且高效的HashMap。在并发中使用HashMap可能导致死循环。在使用线程安全的HashTable效率也不高。 HashMap在并发中执行put操作的时候会引起死循环,是因为多线程会导致HashMap的Entry链表形成环形数据结构,一旦形成环形结构,Entry的next节原创 2017-03-01 23:14:19 · 245 阅读 · 0 评论 -
Executor框架
Java中线程即是工作单元,也是执行单元。从jdk5开始,把工作单元与执行单元机制分离开来。工作单元包括:Runnable和Callable,执行单元由Executor框架提供。1. Executor框架组成部分(1) 任务:Runnable接口和Callable接口(2) 任务的执行:核心接口(Executor),以及继承自Executor的Execut原创 2017-02-12 22:40:39 · 271 阅读 · 0 评论 -
java中线程池
(1)使用线程池的好处:1. 降低资源的消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。2. 提高响应的时间。当任务到达时,任务可以不需要等到线程创建就能立即执行。3. 提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以统一分配、调优和监控。(2)线程池的实现原理:1.线程池判原创 2017-02-12 21:35:14 · 439 阅读 · 0 评论 -
Java线程中对象及变量的并发访问
(1)非线程安全问题存在于实例变量中,如果方法内部的私有变量,则不存在非线程安全的问题,所得结果也就是线程安全的了。方法中的变量不存在线程安全问题,永远都是线程安全的,这是方法内部的变量是私有的特性所造成的。(2)在两个线程访问同一个对象中的同步方法是一定是线程安全。(3)调用关键字synchronized声明的方法一定是排队运行的,要牢记共享这两个字,只有共享资源的读写访问才需要同步化,原创 2017-02-20 23:13:00 · 224 阅读 · 0 评论 -
Java中锁
java中锁 在Javase5后在并发包下新增了Lock接口,用来实现锁的功能,它提供了与synchronized关键字类似的同步功能,在使用时需要显示地获取和释放锁。Lock接口的实现类是ReentrantLock。Lock接口的常用方法:void lock ()方法:获得锁,当前线程获得锁从该方法返回。void lockInterruptibly()throwsI原创 2017-02-12 15:46:08 · 202 阅读 · 0 评论 -
Java线程中的volatile和synchronized的比较
1)关键字volatile是线程同步的轻量级实现,所以volatile性能肯定比synchronized要好,并且volatile只能修饰变量,而synchronized可以修饰方法,以及代码块。随着jdk新版本的发布,synchronized关键字在执行效率上得到了很大的提升,在开发中使用synchronized关键字的比率还是比较大。2)多线程访问volatile不会发生阻塞,而synch原创 2017-02-20 15:45:39 · 234 阅读 · 0 评论 -
线程Thread的类的核心方法
(1) 实现线程的方法1) 继承Thread类2) 实现Runnable接口(2) 启动线程的方法(start)start()方法的顺序并不代表线程启动的顺序。currentThread()方法可返回代码段正在被哪个线程调用的信息。isAlive()方法判断当前的线程是否处于活动的状态。什么是活动状态就是线程已经启动且尚未终止。线程处于正在运行或者准原创 2017-02-18 12:35:25 · 325 阅读 · 0 评论 -
java线程基础知识
(1)线程常用状态:1.新生状态(New Thread)在创建线程对象之后,尚未调用start()方法之前。这个线程就有了生命,此时线程仅仅是一个空对象,系统没有为期分配资源,此时只能 启动和终止线程,其他人和此操作都会引发异常。2.可运行状态(Runnable)在调用start()方法之后,系统为该线程分配除cpu外的所需资源,这个线程就有了运行的机会,此时处于可运行状态,原创 2017-11-23 09:55:37 · 150 阅读 · 0 评论