
java并发
老仙儿
朝阳区 望京
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
java深拷贝、浅拷贝
前言 今天在对ArrayList进行复制的时候,发现复制后的List中的对象的属性发生改变后,原数组也会发生改变,经过一番检索后总结出一些结论。 在日常开发中,对象的复制是非常常见的,而实际上,复制类型也是有区分的,主要有深复制和浅复制。 浅复制 对基本数据类型进行值传递,对引用数据类型进行引用传递般的拷贝.如图为浅拷贝的核心: 实现方式 通过java中的clone方法 通过clone方式实现浅复制需要,它的实现必须实现 Cloneable 接口,否者将抛出 CloneNotSu...转载 2021-12-22 09:54:57 · 116 阅读 · 0 评论 -
类名和Class和Object三者之间的转换
1 通过类名可以得到Class,通过类名.class即可 如:Class class_test=TestMain2.class; 2 通过Class 可以得到类名。通过getName() 如:Class class_test=TestMain2.class; String name1=class_test.getName(); 3 通过Class可以得到Object,通过newInstance() 如:Object obj=class_test.newInstance(); 4 通过Object转载 2021-10-26 14:11:03 · 1731 阅读 · 0 评论 -
Java CountDownLatch应用
Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的await()方法都会阻塞,直到这个计数器的计数值被其他的线程减为0为止。 CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他...转载 2020-12-17 11:32:09 · 99 阅读 · 0 评论 -
ThreadLocal
ThreadLocal是什么 早在JDK 1.2的版本中就提供Java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 从线程的角度看,目标变量就象是线程的本地变量,这也是类名中“Local”所要表达的...转载 2020-11-19 15:05:00 · 125 阅读 · 2 评论 -
ReentrantLock 和 synchronized 对比:
java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能。而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也更适合复杂的并发场景。这篇文章主要是从使用的角度来分析一下ReentrantLock。 一、简介 ReentrantLock常常对比着synchronized来分析,我们先对比着来看然后再一点一点分析。 (1)synchronized是独占锁,加锁和解锁的过程自动进行,易于操作,但不够灵活。Reentra转载 2020-07-01 11:13:58 · 396 阅读 · 0 评论 -
【java并发核心一】Semaphore 的使用思路
1、Semaphore的初步使用 Semaphore是什么,能做什么? Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。 直接看例子吧,这个例子包含3个类,一个是线程类,一个是 Semaphore 关键代码类,一个类是主main方法类: package com.cd.concurrent.semaphore; public class MyThread extends Thr.转载 2020-07-01 10:33:21 · 144 阅读 · 0 评论