2021-04-14线程死锁 Date时间类 Calender类

死锁

不同的线程分别占用对方需要的同步资源不放弃,都等待对方放弃自己需要的同步资源,就形成了线程的死锁

解决死锁的方法

通过Lock实现类

wait() 与 notify() 和notifyAll()

wait():令当前线程挂起并放弃CPU、同步资源,使别的线程可访问并修改共享资源,而当前线程排队等候再次对资源的访问notify():唤醒正在排队等待同步资源的线程中优先级最高者结束等待notifyAll ():唤醒正在排队等待资源的所有线程结束等待.

Java.lang.Object提供的这三个方法只有在synchronized方法或synchronized代码块中才能使用,否则会报java.lang.IllegalMonitorStateException异常

Date类

创建一个date对象,得到的是当前时间 Date date=new Date();

1.获取当前时间的毫秒值 long time = date.getTime();

2.Date(long date)分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970 年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

Date date2=new Date(0);

一小时以后Date date=new Date(time+60*60*1000);

一天以后date=new Date(time+24*60*60*1000);

3.date.getDate()获取日期

4.date.getDay()获取星期几

5.date.getSeconds() 获取毫秒值

6.date.getMonth() 获取月份(注意月份是从0开始到11月)

7.date.getTimezoneOffset()

8.设置年份为2021date.setYear(2021-1900);

9.设置月份date.setMonth(3);//将月份设置为4月

date.setMonth(Calendar.APRIL);

java.util.Date 和 java.sql.Date

java.sql.Date是java.util.Date的子类

java.util.date 和java.sql.date之间的转换

一:java.sql.date可以直接转为java.util.date,java.util.date父类,子类转父类是安全的,向上转型

二:java.util.date可以通过毫秒值作为参数转为java.sql.date

字符串和日期对象之间的转化

1.SimpleDateFormat中需要记忆的时间和日期模式,区分大小写的

y (Year)   M (Month)  d (月份中的天数) H [24小时制(0~23)]  

m (分钟数minute)    (s 秒seconds)          (S 毫秒)

2.日期时间对象 转成  字符串文本

Date date=new Date();//根据当前时间new一个对象

SimpleDateFormat sdf =new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒SSS毫秒");

String format = sdf.format(date);

System.out.println("format = " + format);

3.将字符串 解析为 日期对象

String date_str="2021年04月15日 15时17分21秒";

SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

Date parse = sdf.parse(date_str);//调用parse(String str)将字符串解析为日期对象

System.out.println("parse = " + parse);

4.将字符串"2021-04-15"转为java.sql.Date对象

String info="2021-04-15";

SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");

Date parse = sdf.parse(info);

java.sql.Date date=new java.sql.Date(parse.getTime());

System.out.println("date = " + date);

Calendar类

1.public abstract class Calendar,是一个抽象类抽象类不能直接实例化,通过静态方法getInstance()方法获取其子类对象

Calendar c=Calendar.getInstance();

2.将Calendar子类对象转为Date对象

public final DategetTime()

3.get方法获取年月日星期

c.get(Calendar.YEAR)

c.get(Calendar.MONTH)

c.get(Calendar.DAY_OF_MONTH)

c.get(Calendar.DAY_OF_WEEK)

4.void set(int field, int value)

将给定的日历字段设置为给定值。

void set(int year, int month, int date)

设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。

void set(int year, int month, int date, int hourOfDay, int minute)

设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。

void set(int year, int month, int date, int hourOfDay, int minute, int second)

设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值

c.set(Calendar.YEAR,2066);

c.set(Calendar.MONTH,Calendar.APRIL);

c.set(2021,Calendar.APRIL,15);//设置年月日

c.set(2021,Calendar.APRIL,15,16,56,11);//设置年月日时分秒

System.out.println("c = " + c);

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容