
多线程
文章平均质量分 56
多线程基础介绍
Coder-文小白
95后Java后端程序员,新晋菜鸟奶爸,开始尝试探索副业的小白。微信公众号:Coder-文小白
展开
-
ThreadLocal的理解与应用
在平时java开发中,如果想使用共享变量,往往使用public static 的方式修饰一个类的成员变量,这样就能实现变量共享了。不过,这样的变量是所有线程都共享的,有没有什么方式可以让这个变量只在某个线程中共享使用呢,答案是有的,可以使用ThreadLocal来解决这个问题。 一、ThreadLocal简介 hreadLocal类并不是用来解决多线程环境下的共享变量问题,而是用来提供线程内部的共享变量,在多线程环境下,可以保证各个线程之间的变量互相隔离、相互独立。在线程中,可以通过get()/set()方原创 2020-09-18 14:01:26 · 442 阅读 · 0 评论 -
CAS机制中ABA问题的产生及解决方法
ABA问题,简单描述就是存在一个变量值为A,第一个线程把变量值从A改成了B,第二个线程又把变量值从B改成了A,这样,后面的线程读取这个变量的时候就会以为变量值没有发生变化。 简单用程序模拟一下: public class ABATest { public static void main(String[] args) { int iniValue = 1; AtomicInteger flag = new AtomicInteger(iniValue);原创 2020-06-05 15:13:11 · 522 阅读 · 0 评论 -
java中ReentrantReadWriteLock简单介绍
上周公司进行一次小型的技术培训,培训中提到了ReentrantReadWriteLock,这里写一下简单的使用介绍。 ReentrantReadWriteLock是JAVA的并发包提供的读写锁,它表示两个锁,一个是读操作相关的锁,称为共享锁,线程访问不会发生阻塞;一个是写相关的锁,称为排他锁,线程之间是互斥访问的。 简单理解就是:如果只做读操作,线程之前是可以并行访问的,如果做写操作,线程之前是互斥访问的,这时候只能进行一个写操作,其他写操作会阻塞,读操作也会阻塞,直到写操作释放了锁。 代码演示: 只做读操原创 2020-06-02 14:30:48 · 336 阅读 · 0 评论 -
synchronized修饰类中不同方法,调用的时候方法互斥吗
我们知道,使用synchronized关键字修饰方法时,多个线程调用此方法,会互斥执行。如果synchronized修饰不同的方法,多个线程再分别调用这些方法时是互斥的吗?下面使用代码模拟一下: 新建一个User类: public class User { public synchronized void getUp() { System.out.println("起床..."); try { TimeUnit.SECONDS.sleep(2原创 2020-05-22 11:48:31 · 1333 阅读 · 0 评论 -
java实现多线程的方式(三种)
最近在学习java多线程,在这里记录一下实现多线程的方式: 1.继承Tread类,重写run方法: public class TheadTest01 { public static void main(String[] args) { for (int i = 0; i < 10; i++) { // 使用start方法开启线程 ...原创 2019-12-19 17:57:34 · 191 阅读 · 0 评论