JAVA
文章平均质量分 66
倪家李子
这个作者很懒,什么都没留下…
展开
-
设计模式之工厂模式
引出我们如果要想去使用一个接口,那么一定要为接口定义他的子类,既然有了子类,那就可以按照子类对象的向上转型为接口对象进行实例化的处理操作,于是问题,也就从此出现了(我们开始讨论的不是行与不行,而是好与不好)。我们先来看一张图代码实现interface IBook { public void read();}class ProgramBook implements IBook { @Override public void read() { ...原创 2022-05-02 14:39:30 · 598 阅读 · 0 评论 -
设计模式之适配器模式
引入在我们实际的开发中,接口需要定义很多抽象方法。按照传统的来讲,即便某些子类不需要实现接口中的某些方法,那么也不得不进行方法的覆写(这是因为java语法的要求)。我们来看一下传统的方法interface IBook { public void read(); public void create(); public void message();}class MathBook implements IBook { @Override ...原创 2022-05-01 22:17:46 · 396 阅读 · 0 评论 -
JUC学习之路(ThreadLocalRandom)(七)
ThreadLocal 是一个多线程操作的数据存储类,它可以实现当前线程的数据保存操作,而Random类是一个随机数的操作类范例:观察一个多线程环境中的Random的使用问题 @Test public void randomTest() { Random random = new Random(); // 定义一个随机数的处理类 for (int i = 0; i < 3; i++) { new Thread(() -原创 2022-01-17 20:03:15 · 292 阅读 · 0 评论 -
JUC学习之路(并发计算)(六)
在原子类中,是允许直接实现数学计算的,例如:在AtomicInteger 类是可以直接进行加法计算处理的,但是如果说此时有一些操作不希望使用原子类,就是一些最原始的操作数字想要安全的实现计算,在JDK1.8 之后提供了新的原子的计算类。原子计算类分为:累加器(DoubleAccumulator、LongAccumulator)和加法器(DoubleAdder、LongAdder)两种DoubleAccumulator 范例:累加器的使用 ...原创 2022-01-17 19:21:13 · 255 阅读 · 0 评论 -
JUC学习之路(属性原子操作类)(五)
目录AtomicLongFieldUpdater常用方法 源码: 范例:观察原子性的属性修改器 范例:使用属性修改器在一个类之中可能会存在有若干个不同的属性,但是有可能在进行线程同步处理的时候,不是该类中所有的属性都会被进行所谓的同步操作,只有部分的属性进行同步处理操作,所以在J.U.C 提供的原子类型里面,就包含有一个属性修改器,利用属性修改器可以安全的修改属性的内容。原子开发包中属性修改器一共包含三种:At...原创 2022-01-16 16:55:04 · 188 阅读 · 0 评论 -
JUC学习之路(引用类型原子操作类)(四)
引用类型在程序的开发之中也是需要进行同步处理的,例如:在一个多线程的操作类中,需要引用其他类型的对象,这个时候就要进行引用的原子类操作的使用,但是对于引用类型的原子类在J.U.C.A 包里面实际上提供有三种类型:AtomicReference(引用类型原子类)、AtomicStampedReference(带有引用版本号的原子类)、AtomicMarkableReference(带有标记的原子类型)AtomicReference引用原子类这个类可以直接实现引用数据类型的存储,在进行修改的时候可以实现原创 2022-01-16 15:43:15 · 197 阅读 · 0 评论 -
JUC学习之路(数组原子操作类)(三)
数组就是进行一组数据的存储,当然了,考虑到各种开发之中可能面对的情况,在J.U.C 里面也提供了数组的支持,提供的支持类有AtomicIntegerArray、AtomicLongArray、AtomicReferenceArray本次以原子对象数组操作类功能进行。 在数组原子类的操作过程之中,依然可以见到系列的CAS的操作方法,都是基于乐观锁的机制来实现数据的同步处理操作。实现数组的操作 @Test public void oper...原创 2022-01-15 19:42:31 · 191 阅读 · 0 评论 -
JUC学习之路(基础类型原子操作类)(二)
问题引出我们模拟一个存款操作,代码如下 private static int money = 0; @Test public void plus() throws InterruptedException { int[] data = new int[] {100,200,300}; for (int i = 0; i < data.length; i++) { final int temp = i;原创 2022-01-14 20:55:20 · 150 阅读 · 0 评论 -
JUC学习之路(概念、TimeUnit及ThreadFactory) (一)
什么是JUC Java的并发变成(J.U.C) ,本质上来讲就属于多线程的一种更加设计结构合理的开发框架,例如:Java类集是对数据结构的一种开发框架、JavaIO是对操作系统底层支持的一种开发框架,所以JDK本身也是会提供有开发框架支持的。J.U.C 是由java.util.concurrent包名称给出的三个首字母缩写,J.U.C的提供是为了方便解决并发编程开发过程之中的性能以及稳定性的设计问题,例如:在传统的多线程开发中,一定可以想到如下的几个机制: ...原创 2022-01-14 17:30:39 · 240 阅读 · 0 评论