鱼C论坛

 找回密码
 立即注册
查看: 3309|回复: 3

[学习笔记] Java多线程11

[复制链接]
发表于 2017-6-29 22:06:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 smallFishBug 于 2017-6-30 09:03 编辑

Calendar类
抽象类,为特定瞬间与一组诸如年、月、日、小时等时间之间的转换提供了一些方法,并为操作时间提供方法

getInstance()  返回一个Calendar对象 当前时间
Add(f,delta)   将delta添加到f字段中  f可以为Calendar.SECOND     delta可以为10 相当于当前时间加上10

ReentrantReadWriteLock类
运行效率比ReentrantLock类高   读写锁,一个读操作相关的锁,称为共享锁
                                                                                一个写操作相关的锁,称为排他锁
        多个读锁线程之间不互斥,读锁线程与写锁线程互斥,写锁线程与写锁线程之间互斥
读锁:lock.readLock().lock();  lock.readLock().unlock()
写锁:lock.writeLock().lock();     lock.writeLock().unlock()

定时器Timer
Timer类主要负责计划任务的功能,主要作用就是设置计划任务,TimerTask类负责封装任务
执行计划任务的代码要放入TimerTask的子类中  Task是放入队列中的

接口Runnable下
TimerTask类  抽象类
              由Timer安排为一次执行或重复执行的任务  与Thread相似,内部有run()方法可重写
ParseException类 表示解析时出现意外错误

SimpleDateFormat类
构造方法:
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
方法:
parse(String text,ParsePosition pos)试图从pos给定的索引处开始的文本,解析字符串文本,生成Date
与Date结合使用   Date date1=sdf.parse(String text);

Timer类
方法:
Schedule(TimerTask task,Date time)  安排在指定的时间执行指定的任务

Schedule(TimerTask task,Date firstTime, long period) 安排在指定的任务在指定的时间开始重复的固定延迟执行

Schedule(TimerTask task,long delay) 安排指定延迟后执行指定的任务

Schedule(TimerTask task,long delay,long period) 安排指定的任务从指定的延迟后开始进行重复的固定延迟执行
如果计划时间早已经过去了,则会立即执行task任务  schedule()方法不具有追赶执行性

scheduleAtFixedRate(TimerTask task,Date firstTime, long period) 安排在指定的任务在指定的时间开始重复的固定延迟执行  与对应的schedule()方法差别,
                当执行任务的时间没有被拖延:schedule()  下次任务执行时间参考上一次任务的开始时的时间计算
                                                                                  schedule()方法不具有追赶执行特性
                                                                               scheduleAtFixedRate(TimerTask task,Date firstTime, long period)
                                                                                下次任务执行时间参考上一次任务的结束时的时间计算
                                                                                        scheduleAtFixedRate()具有追赶执行特性(即使时间已经过去了,也从设定好的时间开始执行任务,追赶目前时间)
                当任务的时间被拖延时:两者  下次任务执行时间参考上次任务结束时间计算

Cancel()方法将自身从任务队列中被移除,其他任务不受影响 有时没有抢到队列锁,所以任务还是正常执行

创建一个Timer就是启动一个新的线程,这个新启动的线程并不是守护线程,一直保持运行
Private static Timer timer=new Timer()

新创建一个Timer 改成守护线程
Private static Timer timer=new Timer(true)

Java多线程的笔记就做到这里了~ 《Java多线程》这本书还是挺有难度的,学完一遍,仔细想想,好像没记住什么,可怕~
暑假再学一次~!

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4 支持楼主!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-6-29 22:28:59 | 显示全部楼层
写的不错哦,但不要用金黄色的字体嘛,看到这一句挺是耀眼的~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-29 22:31:28 | 显示全部楼层
对了,记得收录到【专辑】中哦~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-30 09:16:05 | 显示全部楼层
小甲鱼 发表于 2017-6-29 22:31
对了,记得收录到【专辑】中哦~

恩恩~谢谢小甲鱼老师鼓励和提醒~! 我会继续努力哒!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 10:20

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表