Java 多线程
文章平均质量分 87
Zeus_龙
这个作者很懒,什么都没留下…
展开
-
为什么要使用线程池;常见的创建线程池的4种方式
1. 为什么使用线程池诸如 Web 服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如 HTTP、FTP 或 POP)、通过 JMS 队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应用程序的...转载 2018-04-14 17:51:49 · 30284 阅读 · 2 评论 -
ReentrantLock 不公平锁介绍,以及的应用场景。
(一)ReentrantLock不公平锁的几个方法,以及对应的应用的场景。直接上代码:public class TestReentrantLock implements Runnable { public static ReentrantLock rtlk1 = new ReentrantLock();//默认的是false,不公平锁 private ReentrantLock r...原创 2018-04-12 22:25:52 · 1287 阅读 · 1 评论 -
ReentrantReadWriteLock具体例子
(一)ReentrantReadWriteLock类实现ReadWriteLock接口; 实现了lock();unlock()方法。 1.0 可调用读锁的lock(),unlock()方法; 2.0 也可调用写锁的lock(),unlock()方法。(二)代码:eg:public class TestReadWriteLock { public stat...原创 2018-04-12 22:10:11 · 1327 阅读 · 0 评论 -
Unsafe和CAS简单介绍
Unsafe简单讲一下这个类。Java无法直接访问底层操作系统,而是通过本地(native)方法来访问。不过尽管如此,JVM还是开了一个后门,JDK中有一个类Unsafe,它提供了硬件级别的原子操作。这个类尽管里面的方法都是public的,但是并没有办法使用它们,JDK API文档也没有提供任何关于这个类的方法的解释。总而言之,对于Unsafe类的使用都是受限制的,只有授信的代码才能获得该类的实例...转载 2018-04-12 17:48:30 · 238 阅读 · 0 评论 -
java并发实战笔记
每一个想学习Java多线程的人,手里至少有这本书或者至少要看这本书,2012年在看这本书的时候,当时正开发支付平台的后台应用,正好给了我大量的实践机会。强烈建议大家多看几遍。代码中比较容易出现 bug 的场景:不一致的同步,直接调用 Thread.run ,未被释放的锁,空的同步块,双重检查加锁,在构造函数中启动一个线程, notify 或 notifyAll 通知错误, Object.wait ...转载 2018-04-17 15:31:26 · 163 阅读 · 0 评论 -
ReentantLock锁,await(),signal()方法,Condition类,tryLock和lock和lockInterruptibly的区别,读写锁
ReentrantLock特性(对比synchronized)尝试获得锁获取到锁的线程能够响应中断ReentrantLock(重入锁)public class MyService { private Lock lock = new ReentrantLock(); public void testMethod() { lock.lock(); f...转载 2018-04-11 11:14:21 · 1002 阅读 · 0 评论 -
Synchronized、Lock、ReentantLock的区别,以及用法
最近在看《Java并发编程的艺术》,书中不少知识是更深入的去讲解我们平时经常使用的并发实现机制,介绍了它们的实现原理和区别,读完之后真的有种醍醐灌顶的感觉,突然就好像明白了这些实现到底是干什么用、什么时候去用,今天我就来总结一下其中的一个知识点——Synchronized、Lock、ReentrantLock的区别。1. Synchronized当它用来修饰一个方法或者一个代码块的时候,能够保证在...转载 2018-04-10 22:00:58 · 4910 阅读 · 0 评论 -
Java实现多线程的三种方式:继承Thread类;实现Runnable接口;实现Callable接口
实现线程的众所周知的方法具体有2种,但是还有一种,估计不是人人都知道的,没搞过多线程编程的,估计就不知道啦:(1)继承Thread类,重写run方法(2)实现Runnable接口,重写run方法(3)实现Callable接口,重写call方法一直天真的以为只有两种方式来实现多线程,直到我真的来仔细琢磨学习了一下这个问题,才知道,Java后来优化了问题。新增了个高级方式。然后我做如下具体实例来测试。...转载 2018-03-27 13:24:17 · 1782 阅读 · 0 评论 -
Java三种会抛ConcurrentModificationException异常的代码实例
在使用list集合的时候,可能会抛这个异常。具体分析,可能发生这个异常的情况有以下三种情况。我分别做了测试。1:使用迭代器迭代的时候,集合结构遭到修改2:for each 删除集合元素3:多线程并发操作一个集合时候具体都在下面测试代码里。一并都给测了。[java] view plain copypackage com.lxk.ConcurrentModificationExceptionTest;...转载 2018-03-27 13:17:03 · 281 阅读 · 0 评论 -
(一)线程相关面试问题详解
(一)Runnable接口和Callable接口的区别?1.相同点:①都是一种类型的接口(废话)②都可应用于Executors2.不同点:①Callable接口的call()方法,Runnable实现run()方法。 ②call()可以有返回值(),run()方法没有返回值。 ③call()方法可以抛出checked exceptio...原创 2018-04-09 22:06:03 · 373 阅读 · 0 评论 -
Java同步 加锁机制synchrnized
(一)同步当前实例A 方法 的锁:eg:当一个线程进入到A对象的一个synchrnized()方法后,其他线程可以进入此对象的其他方法吗?Service mService = new Service();Thread sleepThread = new Thread(new SleepThread(mService));Thread waitThread = new Thread(new Wa...原创 2018-04-09 21:58:59 · 679 阅读 · 0 评论 -
Java各种锁的介绍
Java中的锁分类在读很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结的内容是对每个锁的名词进行一定的解释。公平锁/...转载 2019-09-16 17:18:30 · 315 阅读 · 0 评论