- 博客(9)
- 问答 (3)
- 收藏
- 关注
原创 Java多线程详解九 ( 原子性,可见性和有序性简述 )
原子性原子性像数据库中的事务一样,要么成功,要么失败,那么我们在多线程中比如同时操作一个数据,并需要多个步骤才能结束,那么必须多个步骤全部执行完成才算成功,否则为失败。举例最经典的例子就是银行取钱了,首先我们从机器上取钱,选择了1000,然后我们的卡减去1000,机器吐出1000,在这个过程中如果卡上减完了,然后没有吐钱,那就出问题了,这样就是不具备原子性,原子性是扣钱和吐钱操作要么全部成功,要么都失败解决方案在Java中,最经典的代码就是i++操作,其实i++并不是原子操作想要在多线程的情况下
2020-11-26 23:13:01 195 2
原创 Java多线程详解八 ( Volalite关键字 )
什么是Volalite?Volalite是为了解决共享变量写入后不能被其它线程读取的关键字,即当A线程修改了共享数据后,B线程可以及时拿到最新的值,解决不可见性问题问题代码演示/** * @author LFDMW * @date 2020-11-26 21:39 */public class VolatileTest implements Runnable{ private boolean flag = false; @Override public void run
2020-11-26 22:06:17 1292
原创 Java多线程详解七 ( 实现Callable接口 )
之前我们讲解了Java实现多线程的两种方式:继承Thread类实现Runnable接口那么我们今天来看一下如何使用实现Callable接口的方式实现多线程代码:package wewi;import java.util.concurrent.Callable;import java.util.concurrent.FutureTask;/** * @author LFDMW * @date 2020-11-25 22:23 */public class CallAbleTes
2020-11-25 22:51:37 222
原创 Java多线程详解六 ( 线程通信之Lock锁使用await和signal简单使用 )
上一篇文章中讲到我们使用synchronized去实现线程安全的通信,今天我们来看一下使用Lock锁的时候能否进行线程之间的通信呢?首先先简单介绍一下本次用到的方法和类本篇文章仅简单讲解一下如何去使用,具体的源码和细节后续会另开一篇文章去讲解!Condition这是一个在Java5之后出现的工具类,可以实现类似于wait与notify一样的等待通知功能,并且支持多路与指定通知,更加灵活我们在使用notify进行通知时是由JVM随机调度的,而我们使用condition中的通知功能则可以自己指定去通知
2020-11-15 01:41:42 1464
原创 Java多线程详解五 ( 线程通信使用wait与notify )
我们之前学习了几种实现线程安全的方式,现在我们来使用synchronized关键字实现线程安全的等待与通知waitwait,翻译过来就是等待的意思,那么我们在Java中的作用是什么呢?wait是在Object类中的一个方法,这样我们在所有的类中都可以调用该方法,wait的作用是使当前线程进入阻塞状态并释放锁,需要调用notify唤醒notifynotify也是Object类中的一个方法,由另一个线程调用唤醒被wait阻塞的线程如果有多个线程被wait阻塞了,那么notify则会唤醒优先级最高的那
2020-11-15 01:18:40 170
原创 Java多线程详解四 ( 使用Lock锁解决同步问题 )
上一篇文章我们讲解了使用synchronized关键字来解决线程的同步问题,那么本篇文章我们使用Lock锁来解决同步问题在Java5之后,出了一个新的同步方式就是Lock锁来解决线程安全问题,话不多说直接上代码!代码/** * @author LFDMW * @date 2020-11-14 23:03 */public class MyLock implements Runnable { /** * 首先我们需要创建一个ReentrantLock锁对象这里可以用Lock接
2020-11-15 00:22:51 341
原创 Java多线程详解三 ( 同步解决线程安全问题 )
什么是线程安全问题首先我们来理解一下什么是线程的安全问题, 举一个例子, 假设我们有两台ATM机,然后A在取钱的时候发现账户里有钱,然后他全部取出来,当ATM机正在执行取钱操作的时候,B也使用了该银行卡发现账户里有钱,然后也同时进行全部取出来这个操作,这样就可能会触发线程的安全问题,两个人同时操作了一个共享的数据!那么我们如何来解决线程安全问题呢?线程的同步解决方案我们在Java中使用同步来解决线程安全问题,我们有一个关键字叫做synchronized,我们可以使用同步代码块或者同步方法的方式来解决
2020-11-14 15:05:36 181
原创 Java多线程详解二 ( 实现Runnable方式 )
上篇文章我们介绍了如何使用继承Thread类来使用多线程,今天我们来学习一下实现Runnable接口的方式去使用多线程我们通过查看Thread类的源码会发现,Thread类也是实现了Runnable接口的那么我们现在先看看Runnable接口里有什么我们会发现Runnable接口中只有一个run方法,那这个时候我们去看一下Thread里面的run方法这时候就会发现,其实我们Thread类的run方法则是重写了Runnable里的run方法ok,言归正传,我们怎么去使用Runnable接口来使
2020-11-14 14:29:37 491
原创 Java多线程详解一 ( 继承Thread方式 )
之前有简单的介绍过多线程的几种实现方式,那么我们现在开始写几篇文章详细去介绍一下多线程的实现方式和一些原理,今天先来介绍一下我们学习多线程的第一种方式,我们使用继承Thread类来实现!话不多说,直接上代码!继承Thread类基础代码// 首先我们创建一个类来继承Thread类public class MyThread extends Thread{ // 然后我们需要重写run方法(非常重要,run方法的方法体中是我们真正执行的代码) @Override public void
2020-11-14 00:44:19 610
空空如也
Java将分页的pdf报表文件合并成多表头报表
2022-03-10
Java将分页的pdf报表文件合并成多表头报表
2022-03-08
js中怎么获取url中的参数完整字符串(参数带有#)
2021-06-21
TA创建的收藏夹 TA关注的收藏夹
TA关注的人