smallFishBug 发表于 2017-6-29 22:06:25

Java多线程11

本帖最后由 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多线程》这本书还是挺有难度的,学完一遍,仔细想想,好像没记住什么,可怕~
暑假再学一次~!

小甲鱼 发表于 2017-6-29 22:28:59

写的不错哦,但不要用金黄色的字体嘛,看到这一句挺是耀眼的~

小甲鱼 发表于 2017-6-29 22:31:28

对了,记得收录到【专辑】中哦~

smallFishBug 发表于 2017-6-30 09:16:05

小甲鱼 发表于 2017-6-29 22:31
对了,记得收录到【专辑】中哦~

恩恩~谢谢小甲鱼老师鼓励和提醒~! {:10_281:}我会继续努力哒!
页: [1]
查看完整版本: Java多线程11