JavaSEDemo18volatile关键字与Quartz调度器与泛型

简介

  • 本文是2021/04/16整理的笔记
  • 赘述可能有点多,还请各位朋友耐心阅读
  • 本人的内容和答案不一定是最好最正确的,欢迎各位朋友评论区指正改进

Lock锁

ReentrantLock锁

构造方法

  1. 无参构造方法 public ReentrantLock()
    默认是非公平锁,等同于public ReentrantLock(false)。
  2. 有参构造方法
    public ReentrantLock(boolean fair)
    有参构造如果参数是true,就是公平锁,要排队

volatile关键字

volatile关键字的作用是什么

  1. 多线程使用volatile关键字修饰的变量,保证变量在多线程间的可见性。即每次读取volatile变量,一定是最新的数据
  2. Java代码执行时,JVM为了执行效率,可能会对指令进行重排序,多线程时可能会出现问题。使用volatile关键字会禁止语义重排序,当然这也一定程度上降低了代码执行效率。

语义重排序

JVM执行value++;
value++ 事实上分为3个独立的操作

  1. 读取这个值
  2. 使之加一
  3. 再写入新值
    如果是多线程共享value变量,JVM打乱排序,就可能导致问题。

注意事项

  • volatile关键字不要轻易使用

Timer

Timer是Java最早提供的一个任务调度器,它可以支持定时任务和重复任务的调度。

Timer和ScheduledThreadPoolExecutor有什么区别?

一个Timer调度器的所有任务都运行在一个线程中,存在单个任务出现异常导致所有任务不能执行的隐患,而JDK5之后的ScheduledThreadPoolExecutor提供了并发任务调用,没有这个隐患。

TimerTask

  • TimerTask是一个抽象类,和Runnable接口一样,通过一个run()抽象方法来定义任务执行的内容
  • TimerTask是Runnable接口的子接口。
  • TimerTask拓展:
    cancel() 取消此计时器任务
    shceduledExecutionTime() 返回此任务最近实际执行的已安排执行时间

SimpleDateFormat

  • 构造方法
    SimpleDateFormat(String pattern)
    pattern: “yyyy-MM-dd HH:mm:ss SSS”
    yyyy:年
    MM:月
    dd:日
    HH:时(24进制) hh:时(12进制)
    mm:分
    ss:秒
    SSS:毫秒

Quartz调度器(框架)

  • Quartz是OpenSymphony开源组织在Job schedulign领域又一个开源项目,完全由Java开发,可以执行定时任务,类似于java.util.Timer。
  • Quartz的基本组成部分:
    调度器: Scheduler
    任务:JobDetail
    触发器:Trigger,包括SimpleTrigger和CronTrigger

Cron表达式

Spring Task的实现需要使用cron表达式来声明执行的频率和规则,cron表达式是由6位或者7位组成的。

第06章 核心机制

泛型

泛型的本质

泛型的本质是参数化烈性,也就是说所操作的数据类型被指定为一个参数。

参数化类型

泛型类型的“类型参数”,它们可以被称为参数化类型

泛型的好处

安全简单,让运行期异常在编译期就显示

泛型使用对比

没有泛型之前,保存“通用数据”的方法

有了泛型之后

Java中类型擦除的特征与限制

编译器处理泛型有两种方式

Codespecialization
Codesharing

类型擦除

类型擦除后保留的原始类型

Java中类型擦除的限制

无法利用同一泛型类的示例来区分方法签名
泛型类的静态变量是共享的

Java中类型擦除的特征

泛型类

使用泛型

泛型方法

泛型接口

两种方式
1.
2.

泛型不支持协变

Java中数组是协变的

泛型不支持协变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

香鱼嫩虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值