
Java--多线程
文章平均质量分 73
yjc0403
这个作者很懒,什么都没留下…
展开
-
Java多线程之基础概念
Java多线程之基础概念 同步和异步同步:调用会等待方法返回异步:调用会瞬间返回,但不代表任务完成,只是在后台继续执行任务。 并发和并行 并行:两个任务同时进行并发:一会做一个任务,一会做两一个任务单CPU不能并行的只能并发 临界区 表示一种共享资源,可以被多个线程使用,每次只能被一个线程使用,一旦临界区...原创 2017-01-07 15:53:52 · 121 阅读 · 0 评论 -
Java多线程之死锁
Java多线程之死锁 什么是死锁 A、B两台车过桥,桥只能过一台车,A、B分别是桥的两头,A不让B,B不让A 怎么查出死锁(两种方法) 方法一JConsole找到本地进程找到线程选项卡,然后检查死锁找到blocked状态的线程,看它需要资源的拥有者方法二JVM自带的命令jps查看进程Jstack查看栈的...原创 2017-01-11 23:53:19 · 115 阅读 · 0 评论 -
Java多线程之线程安全
Java多线程之线程安全 保证线程安全的方法 Synchronized,同步方法,同步块Volatile,修饰变量Lock,可重入锁,读写锁不变类,final class,很少使用线程安全类不使用共享变量ThreadLocal 线程安全类 Vector、Hashtable,如果不涉及线程安全,用这些类就会浪费资源用静态同步...原创 2017-01-13 10:29:55 · 114 阅读 · 0 评论 -
Java多线程之同步集合和并发集合
Java多线程之同步集合和并发集合 不管是同步集合还是并发集合他们都支持线程安全,他们之间主要的区别体现在性能和可扩展性,还有他们如何实现的线程安全。 同步集合类HashtableVector同步集合包装类,Collections.synchronizedMap()和Collections.synchronizedList() 并发集...原创 2017-01-13 16:32:24 · 684 阅读 · 0 评论 -
Java多线程之守护线程
Java多线程之守护线程 在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) ;Daemon的作用是为其他线程的运行提供服务,比如说GC线程。其实User Thread线程和Daemon Thread守护线程本质上来说去没啥区别的,唯一的区别之处就在虚拟机的离开:如果User Thread全部撤离,那么Daemon Thread也就没啥线...原创 2017-01-13 16:33:36 · 127 阅读 · 0 评论 -
Java多线程之建议和问题
Java多线程之建议和问题 建议 1. 给线程取个好名字,好的名字有助于识别线程是拿来干什么的。 2. 尽量少使用同步和锁,如果一定要用,就要缩小同步范围:静态块或Lock 3. 多用同步类,少用wait(),wait(),常用同步类有:CountDownLatch,Semaphone,CyclicBarrier 4. 多用并发集合,少用同步集合 ...原创 2017-01-13 17:28:57 · 111 阅读 · 0 评论 -
Java多线程之常用类--闭包、栅栏、信号量、FutureTask
Java多线程之常用类--闭包、栅栏、信号量、FutureTask 闭锁 用途:可用于命令一组线程在同一个时刻开始执行某个任务,或者等待一组相关的操作结束。尤其适合计算并发执行某个任务的耗时。 public class CountDownLatchTest { public void timeTasks(int nThreads, final...原创 2017-11-19 20:51:07 · 508 阅读 · 0 评论 -
Java多线程之线程池调优
Java多线程之线程池调优 默认配置 corePoolSize=1queueCapacity=Integer.MAX_VALUEmaxPoolSize=Integer.MAX_VALUEkeepAliveTime=60sallowCoreThreadTimeout=falserejectedExecutionHandler=AbortPolicy()...原创 2017-11-21 18:06:42 · 591 阅读 · 0 评论 -
java多线程之阻塞队列
java多线程之阻塞队列 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。 ...原创 2017-11-26 17:29:43 · 281 阅读 · 0 评论 -
Java多线程之线程池结构
Java多线程之线程池结构 线程池框架图 Executor 这是线程池的最顶层接口,我们一般不会用它,就只有一个方法void execute(Runnable command)。 ExecutorService 第二层接口,继承了Executor,如果是用工具类Executors创建的线程池,就可以用这种类型来修饰。增加的方法如下:...原创 2017-01-11 16:01:19 · 182 阅读 · 0 评论 -
Java多线程之线程池概述
Java多线程之线程池 适用情况 单个处理时间比较短将要处理的任务量比较大 好处 线程重复使用减少多次创建和注销线程的开销 工作模型 1. 线程池的工作模型主要两部分组成,一部分是运行Runnable的Thread对象,另一部分就是阻塞队列。 2. 由线程池创建的Thread对象其内部的r...原创 2017-01-10 23:45:22 · 164 阅读 · 0 评论 -
Java多线程之通信
Java多线程之通信 在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。 java内存模型 线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享...原创 2017-01-09 19:03:29 · 155 阅读 · 0 评论 -
Java多线程之线程状态图
Java多线程之线程状态图 新建状态(New):新创建了一个线程对象,这时线程还没工作。就绪状态(Runnable):线程对象创建后,其他线程调用了该对象的start()方法。该状态的线程位于可运行线程池中,变得可运行,等待获取CPU的使用权。运行状态(Running):就绪状态的线程获取了CPU,执行程序代码。阻塞状态(Blocked):阻塞状态是线程因为某种原因...原创 2017-01-07 16:23:42 · 245 阅读 · 0 评论 -
Java多线程之Thread和 Runable
Java多线程之Thread和 Runable Java中实现多线程的方式:继承Thread类实现Runable接口实现Callable接口,并与Future、线程池结合使用 继承Thread类 package com.multithread.learning; /** *@functon 多线程学习 *@author 林炳文 ...原创 2017-01-07 18:39:35 · 141 阅读 · 0 评论 -
Java多线程之Runable资源共享
Java多线程之Runable资源共享 之前谈到Runable能够资源共享,而Thread不能,到底什么意思呢?先看看代码 继承Thread //使用Thread实现线程不能实现资源共享 class MyThread extends Thread { private int ticket=5; private String ...原创 2017-01-07 21:06:00 · 330 阅读 · 0 评论 -
Java多线程之线程调度
Java多线程之线程调度 线程优先级 Java线程有优先级,优先级高的线程会获得较多的运行机会(就像高富帅)。 Java线程的优先级用整数表示,取值范围是1~10,Thread类有以下三个静态常量: static int MAX_PRIORITY:线程可以具有的最高优先级,取值为10。static int MIN_PRIORITY: 线程可以具有的最低优先...原创 2017-01-08 17:24:05 · 122 阅读 · 0 评论 -
Java多线程之同步
Java多线程之同步 很多时候我们用多线程去操作共享资源,有可能会让共享资源出现意想不到的结果,为了避免这种情况,我们需要使用同步。 多线程的三个特性 原子性:线程一旦开始,就不会被其他线程干扰有序性:程序执行的顺序按照代码的先后顺序执行可见性:当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值 多线程的同步...原创 2017-01-08 21:15:42 · 122 阅读 · 0 评论 -
Java多线程之Synchronized详解
Java多线程之Synchronized详解 Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 使用方式 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对...原创 2017-01-08 22:06:18 · 157 阅读 · 0 评论 -
Java多线程之Lock详解
Java多线程之Lock详解 Lock的工作原理 获得锁从线程中读取表示锁状态的变量如果状态为0,就改为1,如果有多个线程,只会有一个成功如果修改成功就获得了锁,进入维护队列如果失败,则进入等待队列并阻塞自身,此时线程一直被阻塞在lock方法中,没有从该方法中返回如果表示状态的变量的值为1,那么将当前线程放入等待队列中,然后将自身阻塞(被唤醒后仍然在loc...原创 2017-01-09 00:10:36 · 293 阅读 · 0 评论 -
Java多线程之Volatile详解
Java多线程之Volatile详解 Volatile不加锁,单每次读取从主内存读,,每次写要写回到主内存;相当于轻量级的Synchronized,编码少,开销少,但是没有原子性,性能比Synchronized好。 Volatile具有的特性可见性顺序性没有原子性 正确使用Volatile 对变量的写操作不依赖当前值;不能做线...原创 2017-01-09 11:28:33 · 124 阅读 · 0 评论 -
java多线程之面试题
java多线程之面试题 怎么理解多线程? 1. 让应用程序在一个时间段做多个事情,提高效率2. 可以实现异步的效果,主线程马上返回成功,子线程继续去工作 程序、进程、线程的关系 一个程序,就有一个进程,一个进程中可以有多个线程,其中又分为主线程和子线程。 理解并发与并行 并发:通过CPU调度算法,让用户看上去同时...原创 2017-11-26 22:13:01 · 177 阅读 · 0 评论