多线程
逐个温度
诚实守信,勤奋努力,脚踏实地,有理想有目标,2011年9月就读于于临沂大学信息学院软件工程专业本科,2015年9就读于南京邮电大学计算机软件学院研究生
展开
-
Java 线程 Executor 框架详解与使用
在HotSpot VM的线程模型中,Java线程被一对一映射为本地操作系统线程。Java线程启动时会创建一个本地操作系统线程;当该Java线程终止时,这个操作系统线程也会被回收,在JVM中我们可以通过-Xss设置每个线程的大小。操作系统会调度所有线程并将它们分配给可用的CPU。 在上层,java多线程程序通常把应用分解为若干个任务,然后使用用户级的调度器(Executor框架)将这转载 2017-06-07 15:30:12 · 277 阅读 · 0 评论 -
简述死锁
什么是死锁 死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。例如,在某一个计算机系统中只有一台打印机和一台输入 设备,进程P1正占用输入设备,同时又提出使用打印机的请求,但此时打印机正被进程P2 所占用,而P2在未释放打印机之前,又提出请求使用正被P1占用着的输入设备。这样两个进程相互无休止地等待下去,均无法继续执行,此时两个进程陷入死锁状态。转载 2017-06-26 09:19:25 · 439 阅读 · 0 评论 -
Java多线程中join方法的理解
thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。 t.join(); //使调用线程 t 在此之前执行完毕。 t.join(1000); //等待 t 线程,等待时间是1000毫秒 先上一段JDK中代码: Java代码转载 2017-06-26 09:12:24 · 417 阅读 · 0 评论 -
Java 多线程并发编程之互斥锁 Reentrant Lock
Java 中的锁通常分为两种: 通过关键字 synchronized 获取的锁,我们称为同步锁,上一篇有介绍到:Java 多线程并发编程 Synchronized 关键字。java.util.concurrent(JUC)包里的锁,如通过继承接口 Lock 而实现的 ReentrantLock(互斥锁),继承 ReadWriteLock 实现的 ReentrantReadWriteLoc转载 2017-06-09 21:23:46 · 853 阅读 · 0 评论 -
Java 多线程并发编程之 Synchronized 关键字
synchronized 关键字解析 同步锁依赖于对象,每个对象都有一个同步锁。 现有一成员变量 Test,当线程 A 调用 Test 的 synchronized 方法,线程 A 获得 Test 的同步锁,同时,线程 B 也去调用 Test 的 synchronized 方法,此时线程 B 无法获得 Test 的同步锁,必须等待线程 A 释放 Test 的同步锁才能获得从而执行对应方转载 2017-06-09 21:13:18 · 202 阅读 · 0 评论 -
Java 多线程之内置锁与显示锁
Java中具有通过Synchronized实现的内置锁,和ReentrantLock实现的显示锁,这两种锁各有各的好处,算是互有补充,今天就来做一个总结。 Synchronized 内置锁获得锁和释放锁是隐式的,进入synchronized修饰的代码就获得锁,走出相应的代码就释放锁。 synchronized(list){ //获得锁 list.append(); l转载 2017-06-09 20:24:23 · 213 阅读 · 0 评论 -
Java 并发集合的实现原理
本文简要介绍Java并发编程方面常用的类和集合,并介绍下其实现原理。 AtomicInteger 可以用原子方式更新int值。类 AtomicBoolean、AtomicInteger、AtomicLong 和 AtomicReference 的实例各自提供对相应类型单个变量的访问和更新。基本的原理都是使用CAS操作: boolean compareAndSet(expectedVa转载 2017-06-09 16:18:14 · 234 阅读 · 0 评论 -
我是一个线程
转载 码农翻身微信公众号 2016-04-02 老刘 《我是一个线程(修订版)》 第一回 初生牛犊 我是一个线程,我一出生就被编了个号:0x3704,然后被领到一个昏暗的屋子里,在这里我发现了很多和我一模一样的同伴。 我身边的同伴0x6900 待的时间比较长,他带着沧桑的口气对我说:“我们线程的宿命就是处理包裹。把包裹处理完以后还得马上回到这里,否则可能永远回不来了转载 2017-06-09 10:40:26 · 183 阅读 · 0 评论 -
Java 线程池(ThreadPoolExecutor)原理分析与使用
在我们的开发中“池”的概念并不罕见,有数据库连接池、线程池、对象池、常量池等等。下面我们主要针对线程池来一步一步揭开线程池的面纱。 使用线程池的好处 1、降低资源消耗 可以重复利用已创建的线程降低线程创建和销毁造成的消耗。 2、提高响应速度 当任务到达时,任务可以不需要等到线程创建就能立即执行。 3、提高线程的可管理性 线程是稀缺资源,如果无限制地转载 2017-06-07 20:15:09 · 366 阅读 · 1 评论 -
Java模拟CAS的实现
锁是一种阻塞的实现方式,而CAS是一个非阻塞算法的常见实现。 CAS全称比较并交换。在Java的底层对这个的实现是利用了底层的机器指令。CAS主要包含了3个操作数—-需要读写的内存位置(V)、进行比较的预期原值(A)和拟写入的新值(B)。当且仅当V位置的值与预期的原值A相同时CAS才会通过原子的方式把新值B更新到A,否则不会执行任何操作。需要注意的是,无论是否操作成功都会返回V原有转载 2017-06-26 14:23:36 · 2389 阅读 · 5 评论