多线程
DayDayUpTianTian
一只小猿猿
展开
-
多线程之ThreadLocal使用(创建线程池)
继上篇之后,此处测试Threadlocal在线程之间传递参数信息,不多做赘述,相应代码及最终结果如下:package com.example.thread.callable.y0120;import java.util.Random;import java.util.concurrent.ExecutorService;import java.util.concurrent.Execu原创 2018-01-21 10:18:52 · 3388 阅读 · 0 评论 -
多线程之ThreadLocal适用场景
今天同事说了一个有意思的问题,如下:有三个方法相互调用,其中A方法调用B方法,B方法调用C方法, * 这三个方法的参数数据结构完全一致,怎么样在不改变方法参数的数据结构情况下多传递一个参数? (注意:是不改变任何参数的数据结构,不能有任何改变)分析:此问题主要考察的是一个全局存储的问题,也是考查临场发挥能力。刚被问的时候确实没回答出来,百度了一把,也没有查询出来,不过今天想了想这个可以用Threa...原创 2018-01-20 22:14:12 · 521 阅读 · 0 评论 -
java实现死锁代码
有一天,小李去参加面试,面试官让他写一个死锁的程序,小李思索了一两分钟,于是开始了死锁的代码:public static void main(String[] args) { Thread t1 = new Thread(() -> { synchronized (Integer.class) { System.o...原创 2019-09-06 10:18:39 · 3358 阅读 · 3 评论 -
java并发编程之重入锁
重入锁可以完全替代synchronized关键字,在JDK 5.0早期版本中,重入锁的性能远远好于synchronzied,但是在6.0之后在synchronzied上做了大量的优化,使两者的差距并没那么大的差别。重入锁使用java.util.concurrent.locks.ReentrantLock类来实现,它只是一个类;且看如下代码:package cn.yan.current...原创 2019-09-22 09:59:39 · 183 阅读 · 0 评论 -
Condition:重入锁的好搭档
想必大家都知道,Objet类有wait() ,notify()方法;分别是让线程等待和唤醒,那么condition效果是大同小异的,只不过需要和ReentrantLock搭配使用(而wait和notify是和synchronzied搭配使用的)。由此可见,利用condition对象,我们就可以让线程在合适的时间等待,或在特定的某个时间得到通知,继续执行。Condition接口有以下几个方法:...原创 2019-09-22 10:48:19 · 242 阅读 · 0 评论 -
CountDownLatch 倒计时器
Count down英文释义倒计数,latch为门闩;顾名思义,所以这个类在java中就会用在所有线程都执行完毕之后在执行其他操作的场景,比如说火箭发射等;CountDownLatch的构造函数接受一个整数作为参数,即这个计数器的个数;且看下面CountDownLatch代码:package cn.yan.current;import java.util.Random;import...原创 2019-09-23 11:02:05 · 290 阅读 · 0 评论 -
CyclicBarrier:循环栅栏
CyclicBarrier是另一种多线程并发的是工具,和CountDownLatch非常类似,它也可以实现线程间的计数等待,它的功能比CountDownLatch更加强大。因为CyclicBarrier是循环栅栏,所有的线程必须在栅栏处等待,并且可以循环使用。假设我们将计数器设置为10,那么凑齐第一个10个线程后,计数其就会归0,并重新计算。比如我们要求十个线程一起去执行任务;这时我们需要先让...原创 2019-09-23 15:53:06 · 262 阅读 · 0 评论 -
高并发程序设计之无锁
就人而言,分为被悲观派和乐观派;对于乐天派而言,总是把事情往好的方面想。他们认为所有的事情总是不太容易发生的,出错的几率很小。对于悲观派,他们总是担心意外的发生,所以他们把所有的事情都想的很中哦,确保万无一失。对于并发控制而言,也可以分为悲观锁和乐观锁;我们平时所说的synchronized和ReentrantLock锁都属于悲观锁了;而乐观锁我们往往是通过CAS(Compare And Sw...原创 2019-09-24 11:30:25 · 206 阅读 · 0 评论