并发编程
文章平均质量分 92
njitzyd
这个作者很懒,什么都没留下…
展开
-
Java中的锁
Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文主要介绍了Java中的锁机制以及常用的锁的实现,以帮助工作中更好的运用。锁是jvm内置的锁,不同于锁。关键字可以修饰方法,也可以修饰代码块。关键字修饰方法时可以修饰静态方法,也可以修饰非静态方法;关键字可以修饰代码块。值得注意的是synchronized是一个对象锁,也就是它锁的是一个对象。因此,无论使用哪一种方法,synchronized都需要有一个锁对象。原创 2023-05-04 23:15:17 · 1570 阅读 · 1 评论 -
Spring中@Async注解的使用
简介Spring中用@Async注解标记的方法,称为异步方法,它会在调用方的当前线程之外的独立的线程中执行,其实就相当于我们自己new Thread(()-> System.out.println("hello world !"))这样在另一个线程中去执行相应的业务逻辑。本篇先只讲@Async的使用,后面会分析它实现原理。 @Async注解使用条件:@Async注解一般用在类的方法上,如果用在类上,那么这个类所有的方法都是异步执行的;所使用的@Async注解方法的类对象应原创 2021-08-28 23:03:40 · 446 阅读 · 0 评论 -
Java中定时任务ScheduledThreadPoolExecutor、Timer、@Scheduled和Quartz
1.简介 在实际应用中,有时候我们需要创建一些个延迟的、并具有周期性的任务,比如,我们希望当我们的程序启动后每隔1小时就去做一次日志记录、每天凌晨12点去清理一下数据库中的过期数据等。在JDK中提供了两种方法去创建延迟周期性任务。分别是ScheduledThreadPoolExecutor和Timer。另外还有一个开源的更加强大的任务调度框架Quartz。下面我们来具体认识这三个框架。2.TimerTimer的主要方法有:// 安排在指定的时间执行void schedule(TimerTask t原创 2021-08-27 00:21:29 · 1881 阅读 · 0 评论 -
Java中 volatile的使用和理解
简介Volatile 是 Java 虚拟机提供轻量级的同步机制。它有三个特性:保证可见性不保证原子性禁止指令重排基本原理当对非volatile变量进行读写的时候,每个线程先从主内存拷贝变量到CPU缓存中,如果计算机有多个CPU,每个线程可能在不同的CPU上被处理,这意味着每个线程可以拷贝到不同的CPU cache中。 volatile共享变量则会在修改之后立即刷新到内存中,并使其他CPU中的变量失效,使得其他CPU使用时必须从内存中重新加载。(这就保证了可见性)在volatile修饰原创 2021-01-31 19:15:24 · 269 阅读 · 0 评论