![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程与锁
不爱吃汤圆的汤圆坨坨
这个作者很懒,什么都没留下…
展开
-
TimeUnit
public enum TimeUnitextends EnumTimeUnit 表示给定单元粒度的时间段,它提供在这些单元中进行跨单元转换和执行计时及延迟操作的实用工具方法。TimeUnit 不维护时间信息,但是有助于组织和使用可能跨各种上下文单独维护的时间表示形式。TimeUnit 主要用于通知基于时间的方法如何解释给定的计时参数。例如,如果 lock 不可用,则以下代码将转载 2017-07-11 19:08:31 · 511 阅读 · 0 评论 -
并发编程实战死锁读书笔记之吐槽
简单顺序死锁package com.txr.TransferMoneyDemo;/** * Created by txr on 2017/7/28. */public class LeftRightDeadlock { private final Object left =new Object(); private final Object right=new原创 2017-07-28 16:27:48 · 378 阅读 · 0 评论 -
Callable和Future
本篇说明的是Callable和Future,它俩很有意思的,一个产生结果,一个拿到结果。 Callable接口类似于Runnable,从名字就可以看出来了,但是Runnable不会返回结果,并且无法抛出返回结果的异常,而Callable功能更强大一些,被线程执行后,可以返回值,这个返回值可以被Future拿到,也就是说,Future可以拿到异步执行任务的返回值,下面来看一个简单的转载 2017-07-26 16:06:51 · 631 阅读 · 0 评论 -
java 双重检查加锁弊端
Java是在语言级提供对线程的支持,所以Java的内存模型分为主存储器和工作存储器.[Main memory]主存储器就是实例所在的存储区域,所有实例本身都被放在主存储器中,当然这句话本身就说明了实例的字段也在主存储器中,主存储器被实例的所有线程所共有.[working memory] 工作存储器当然就是每个线程所专有的工作区域,当然其中有它们共有的主存储器中的一些必要的如转载 2017-08-02 20:13:06 · 699 阅读 · 0 评论 -
Java并发编程:并发容器之CopyOnWriteArrayList(转载
原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略。其基本思路是,从一开始大家都在共享同一个内容,当某个人想要修改这个内容的时候,才会真正把内容Copy出去形成一个新的内容然后再改,这是一种延时懒惰策略。从JDK1.5开始Java并发包里提供了两个使用CopyOn转载 2017-07-25 13:46:10 · 218 阅读 · 0 评论 -
java多线程问题
1、synchronized修饰在static方法和非static方法的区别首先知道synchronized是什么在Java中,synchronized是用来表示同步的,我们可以用synchronized来修饰一个方法。也可以synchronized来修饰方法里面的一个语句块。那么,在static方法和非static方法前面加synchronized的区别是什么呢? synchr转载 2017-02-07 01:14:48 · 212 阅读 · 0 评论 -
HashTable与HashMap的区别
HashTable与HashMap的区别1)、HashTable与HashMap实现的是不同的接口 Hashtable是Dictionary的子类HashMap是Map接口的子类2)、HashTable的键值都不允许为空,HashMap的键值只允许为空(试验了可以俩个都为空)package com.txr.oto.fk;import java.util.Has原创 2017-02-08 20:26:02 · 264 阅读 · 0 评论 -
关于多线程下的单例模式及其优化
首先来分析如下单例模式所存在的问题饿汉式单例模式测试代码:public class synDemo01 { static Jvm j1=null; static Jvm j2=null; public static void main(String[] args) { Thread t1=new Thread("thread1"){ public原创 2017-02-22 16:59:55 · 520 阅读 · 0 评论 -
生产者消费者模式(解决多线程容易死锁的一个方案)
生产者消费者问题,也称为有限缓冲问题,是一个多线程同步问题的经典案例。该问题描叙了俩个共享固定大小缓冲区的线程——即所谓的“生产者”和“消费者”——在实际运行时会发生的问题。生产者的主要作用是生产一定量的数据放到缓冲区中,然后重复此过程。与此同时,消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者不会在缓冲区中空时消耗数据 要解决该问题,就必原创 2017-02-22 19:30:10 · 3344 阅读 · 0 评论 -
线程总结
Timer定时器类TimerTask任务类通过Java timer timetask:(spring 的任务调度就是通过他们来实现的)在这种实现方式中,Timer类实现的是类似闹钟的功能,也就是定时或者每隔一定时间触发一次线程。其实,Timer类本身实现的就是一个线程,只是这个线程是用来实现调用其他线程的。而TimerTask类是一个抽象类,该类实现了Runnable接口,原创 2017-02-22 20:28:53 · 265 阅读 · 0 评论 -
java四种线程池的使用
ava通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执转载 2017-03-01 19:39:34 · 440 阅读 · 0 评论 -
关于假如有Thread1、Thread2、Thread3、Thread4四条线程分别统计C、D、E、F四个盘的大小,所有线程都统计完毕交给Thread5线程去做汇总,应当如何实现?
第一种方法:直接用join把线程5加入进去即可第二种方法:用java.util.concurrent下的方法解决用CountDownLatch : 一个线程(或者多个), 等待另外N个线程完成某个事情之后才能执行CountDownLatch 是计数器, 线程完成一个就记一个, 就像 报数一样, 只不过是递减的.盗用别人的一个例子:public class C转载 2017-03-15 00:01:04 · 4794 阅读 · 0 评论 -
JDK1.8版本,java并发框架支持锁包括
1、自旋锁,自旋,jvm默认是10次,由jvm自己控制,for去争取锁2、阻塞锁 被阻塞的线程,不会争夺锁3、可重入锁,多次进入改锁的域4、读写锁5、互斥锁,锁本身就是互斥的6、悲观锁,不相信这里是安全的,必须全部上锁7、乐观锁,相信这里是安全的8、公平锁,有优先级的锁9、非公平锁,无优先级的锁10、偏向锁,无竞争不锁,有竞争挂起,转为轻量锁11、对象锁,锁原创 2017-03-15 21:58:13 · 5183 阅读 · 0 评论 -
sychronized实现原理
测试类:打开cmd,执行javac java文件的路径进行编译该文件,生成.class文件,然后执行javap -c生成的.class文件反编译.class文件,-c表示打印出方法的字节码指令,结果如下发现有俩个监视类的东西,monitorenter,monitorexit,在线查看jvm规范,描述如下大致翻译就是monitorenter 获取由objec原创 2017-04-14 21:51:39 · 830 阅读 · 0 评论 -
Java里一个线程调用了Thread.interrupt()到底意味着什么?
一个线程不应该由其他线程来强制中断或停止,而是应该由线程自己自行停止。所以,Thread.stop, Thread.suspend, Thread.resume 都已经被废弃了。而 Thread.interrupt 的作用其实也不是中断线程,而是「通知线程应该中断了」,具体到底中断还是继续运行,应该由被通知的线程自己处理。具体来说,当对一个线程,调用 interrupt() 时,原创 2017-06-29 20:20:24 · 1157 阅读 · 0 评论 -
java公平锁源码解读
基本概念本章,我们会讲解“线程获取公平锁”的原理;在讲解之前,需要了解几个基本概念。后面的内容,都是基于这些概念的;这些概念可能比较枯燥,但从这些概念中,能窥见“Java锁”的一些架构,这对我们了解锁是有帮助的。 1. AQS – 指AbstractQueuedSynchronizer类。 AQS是java中管理“锁”的抽象类,锁的许多公共方法都是在这个类中实现。AQS是独占锁(例转载 2017-09-03 20:40:31 · 451 阅读 · 0 评论