多线程
hw120219
这个作者很懒,什么都没留下…
展开
-
多线程工具
semaphore CyclicBarrier CountDownLatch Exchanger原创 2017-01-09 15:03:16 · 811 阅读 · 0 评论 -
countDownLatch与cyclicBarrier的区别
countDownLatch举例说明public class countDownlatchTest { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(5); f...原创 2019-08-07 11:43:22 · 137 阅读 · 0 评论 -
多线程callable
传统的thread里面,在执行完任务之后无法获取执行结果。通过共享变量或者使用线程通信获取结果,比较麻烦。就是Runnable接口,线程的真正业务在run里面。jdk1.5 开始提供Callable和Future,通过它们可以在任务执行完毕之后得到任务执行结果。二 futureCallable 和Future位于java.util.concurrent 包下。Callable 是个接口,...原创 2019-08-07 10:33:02 · 134 阅读 · 0 评论 -
什么是乐观锁和悲观锁
乐观锁和悲观锁是一种程序设计思想,而不是具体的代码。乐观锁和悲观锁应用的场景有很多,在数据库和多线程等等都会用到。悲观锁总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁(共享资源每次只给一个线程使用,其它线程阻塞,用完后再把资源转让给其它线程)。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,...原创 2019-07-17 17:39:19 · 1951 阅读 · 2 评论 -
多线程发令枪CountDownLatch
如果我们创建多个线程,希望他们在同一时刻启动,那么就会用到类似发令枪的功能,也就是countDownLatch它有两个重要的方法await()阻塞线程,countDown()每次调用会递减1,当减少为0的时候,会让所有的线程启动。下面写个例子方便大家的理解,这个例子的大概意思就是说main线程作为发号员,发令枪一响,三个线程开始run。三个线程完成后,通知main线程完成,让main线程继续下面...原创 2019-07-17 17:22:16 · 491 阅读 · 0 评论 -
volatile
volatile关键字的作用:强制从公共堆栈中取得变量的值,而不是线程私有数据栈。volatile 与 synchronized 关键字比较:1.volatile只能修饰变量2.多线程访问volatile不会发生阻塞,而synchronized会阻塞3.volatile能保证可见性,无法保证原子性。synchronized可以保证原子性,间接也可保证可见性。因为它会将私有内存和公共内存做同...原创 2019-06-29 18:00:41 · 96 阅读 · 0 评论 -
synchronized可重入锁及常见特点
“可重入锁”的概念:自己可以再次获取自己的内部锁。比如一个线程获得了某个对象的锁,此时锁还没释放,当再次获取这个对象锁的时候还可以获取。(如果不能获取,就会造成死锁)。可重入锁的例子如下:package com.hanw.testKafka;public class Test1 { public static void main(String[] args) { MyThread t ...原创 2019-06-29 17:07:29 · 1599 阅读 · 0 评论 -
多线程单例模式的实现方式与线程组
1.DCL双检查锁2.静态内置类3.静态代码块4.枚举线程组的作用1.使组内的线程批量停止2.使线程具有有序性SimpleDateFormat在多线程情况下,会出现转换异常解决方法:1.创建多个simpledataFormat实例2.使用ThreadLocal类...原创 2019-07-03 18:43:08 · 537 阅读 · 0 评论 -
ReetranLock
ReetranLock比synchronized更加灵活synchronized 与wait,nodify,nodifyAll方法相结合实现通知等待ReetranLock与Condition对象的await,signal,signalAll也可实现此功能,而且可以选择性的进行线程通知,唤醒指定的线程。举例说明,实现生产者、消费者多对多打印package lock;import java...原创 2019-07-02 22:01:52 · 448 阅读 · 0 评论 -
多线程ThreadLocal类
所有线程共享的变量可以用public static修饰 ,每一个线程自己独有的共享变量可以用ThreadLocal修饰。package com.hanw.testThread.oneByOne;import java.util.Date;public class ThreadLocal1 { public static void main(String[] args) throws I...原创 2019-07-02 14:50:50 · 256 阅读 · 0 评论 -
多线程join()方法总结
join的作用是使所属的对象x正常执行run()方法的任务,使当前线程z无限期等待,等待x线程销毁后,在执行z的代码。join具有使线程排队的作用,有些类似同步的运行效果。join与synchronized的区别1.join在内部使用wait方法等待2.synchronized使用的是对象监视器原理作为同步join过程中,当前对象被中断interrupt,则当前线程抛异常。join(20...原创 2019-07-02 14:20:40 · 755 阅读 · 0 评论 -
线程的状态
1.创建新线程并调用start方法,线程进入runnable(可运行)状态,如果抢占到cpu资源,线程进入running(运行)状态。2.线程进入可运行状态有五种情况1.调用sleep方法超过指定休眠时间2.线程调用的阻塞io已经返回,阻塞方法执行完毕3.线程获得了试图同步的监视器4.线程正在等待通知,其他线程发出通知5.处于挂起状态的线程调用了resume方法3.线程处于阻塞状态,...原创 2019-07-01 20:55:25 · 464 阅读 · 0 评论 -
synchronized 实现死锁
synchronized首先明确锁的是对象而不是方法代码,如果一个对象有两个方法,两个线程分别调用其中一个方法,如果锁传入的参数为 同一对象与不同对象,线程运行结果是不一样的死锁代码如下package com.hanshow.wise.portal.center.controller.common;public class Test11 { public static void main...原创 2019-06-05 22:02:29 · 582 阅读 · 0 评论 -
多线程volatile与synchronized区别
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-06-25 09:40:51 · 352 阅读 · 0 评论 -
多线程阻塞队列面试题
1.创建四个线程,打印16个日志对象,使用队列的方式。public class Test { public static void main(String[] args) { BlockingQueue<String> queue=new ArrayBlockingQueue<String>(16); for(int i=0;i<4;i++){原创 2017-01-09 20:24:18 · 1320 阅读 · 0 评论 -
多线程 同步集合类
多线程并发在操作传统集合的时候,有可能出现死循环(带有while循环的代码)或者抛异常(在使用迭代器的时候),因为需要专门的多线程集合保证集合安全。 1,ConcurrentHashMap.其主要接口方法和HashMap是差不多的。但是,ConcurrentHashMap是使用了ReentranLock(可重入锁机制)来保证在多线程 环境下是线程安全的。 2,ConcurrentLinke原创 2017-01-09 18:53:56 · 923 阅读 · 0 评论 -
多线程 阻塞队列
BlockingDuque 多线程 阻塞队列原创 2017-01-09 18:26:05 · 317 阅读 · 0 评论 -
创建线程的四种方式
1.继承于Thread类,重写run()方法;2.实现Runable接口,实现里面的run()方法;前两种不用多说3.使用 FutureTask 实现有返回结果的线程,可以返回线程执行结果public class Test { public static void main(String[] args) throws InterruptedException, ExecutionExc...原创 2019-08-22 10:40:47 · 136 阅读 · 0 评论