发表于: 2017-11-25 17:11:50

1 659


今天完成的事情:

Thread.sleep(long millis)和Thread.sleep(long millis, int nanos)静态方法强制当前正在执行的线程休眠(暂停执行),以“减慢线程”。
当线程睡眠时,它睡在某个地方,在苏醒之前不会返回到可运行状态。
当睡眠时间到期,则返回到可运行状态。
 
线程睡眠的原因:线程执行太快,或者需要强制进入下一轮,因为Java规范不保证合理的轮换。
 
睡眠的实现:调用静态方法。
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace(); 
        }
 
睡眠的位置:为了让其他线程有机会执行,可以将Thread.sleep()的调用放线程run()之内。这样才能保证该线程执行过程中会睡眠。
注意:
1、线程睡眠是帮助所有线程获得运行机会的最好方法。
2、线程睡眠到期自动苏醒,并返回到可运行状态,不是运行状态。sleep()中指定的时间是线程不会运行的最短时间。因此,sleep()方法不能保证该线程睡眠到期后就开始执行。
3、sleep()是静态方法,只能控制当前正在运行的线程。


Java Calendar 类时间操作

注意事项:

Calendar 的 month 从 0 开始,也就是全年 12 个月由 0 ~ 11 进行表示。

而 Calendar.DAY_OF_WEEK 定义和值如下:

Calendar.SUNDAY = 1
Calendar.MONDAY = 2
Calendar.TUESDAY = 3
Calendar.WEDNESDAY = 4
Calendar.THURSDAY = 5
Calendar.FRIDAY = 6
Calendar.SATURDAY = 7


SimpleDateFormat

 SimpleDateFormat函数语法 
  G 年代标志符
  y 年
  M 月
  d 日
  h 时 在上午或下午 (1~12)
  H 时 在一天中 (0~23)
  m 分
  s 秒
  S 毫秒
  E 星期
  D 一年中的第几天
  F 一月中第几个星期几
  w 一年中第几个星期
  W 一月中第几个星期
  a 上午 / 下午 标记符 
  k 时 在一天中 (1~24)
  K 时 在上午或下午 (0~11)
  z 时区


public static void main(String[] args)
{
// 字符串转换日期格式
   // DateFormat fmtDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
   // 接收传入参数
   // String strDate = args[1];
   // 得到日期格式对象
   // Date date = fmtDateTime.parse(strDate);

   // 完整显示今天日期时间
   String str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(new Date());
   System.out.println(str);

   // 创建 Calendar 对象
   Calendar calendar = Calendar.getInstance();

   try
   {
// 对 calendar 设置时间的方法
       // 设置传入的时间格式
       SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-M-d H:m:s");
       // 指定一个日期
       Date date = dateFormat.parse("2013-6-1 13:24:16");
       // 对 calendar 设置为 date 所定的日期
       calendar.setTime(date);

       // 按特定格式显示刚设置的时间
       str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
       System.out.println(str);
   }
catch (ParseException e)
{
e.printStackTrace();
   }

// 或者另一種設置 calendar 方式
   // 分別爲 year, month, date, hourOfDay, minute, second
   calendar = Calendar.getInstance();
   calendar.set(2013, 1, 2, 17, 35, 44);
   str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
   System.out.println(str);

   // Calendar 取得当前时间的方法
   // 初始化 (重置) Calendar 对象
   calendar = Calendar.getInstance();
   // 或者用 Date 来初始化 Calendar 对象
   calendar.setTime(new Date());

   // setTime 类似上面一行
   // Date date = new Date();
   // calendar.setTime(date);

   str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS")).format(calendar.getTime());
   System.out.println(str);

   // 显示年份
   int year = calendar.get(Calendar.YEAR);
   System.out.println("year is = " + String.valueOf(year));

   // 显示月份 (从0开始, 实际显示要加一)
   int month = calendar.get(Calendar.MONTH);
   System.out.println("nth is = " + (month + 1));

   // 本周几
   int week = calendar.get(Calendar.DAY_OF_WEEK);
   System.out.println("week is = " + week);

   // 今年的第 N 天
   int DAY_OF_YEAR = calendar.get(Calendar.DAY_OF_YEAR);
   System.out.println("DAY_OF_YEAR is = " + DAY_OF_YEAR);

   // 本月第 N 天
   int DAY_OF_MONTH = calendar.get(Calendar.DAY_OF_MONTH);
   System.out.println("DAY_OF_MONTH = " + String.valueOf(DAY_OF_MONTH));

   // 3小时以后
   calendar.add(Calendar.HOUR_OF_DAY, 3);
   int HOUR_OF_DAY = calendar.get(Calendar.HOUR_OF_DAY);
   System.out.println("HOUR_OF_DAY + 3 = " + HOUR_OF_DAY);

   // 当前分钟数
   int MINUTE = calendar.get(Calendar.MINUTE);
   System.out.println("MINUTE = " + MINUTE);

   // 15 分钟以后
   calendar.add(Calendar.MINUTE, 15);
   MINUTE = calendar.get(Calendar.MINUTE);
   System.out.println("MINUTE + 15 = " + MINUTE);

   // 30分钟前
   calendar.add(Calendar.MINUTE, -30);
   MINUTE = calendar.get(Calendar.MINUTE);
   System.out.println("MINUTE - 30 = " + MINUTE);

   // 格式化显示
   str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
   System.out.println(str);

   // 重置 Calendar 显示当前时间
   calendar.setTime(new Date());
   str = (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SS")).format(calendar.getTime());
   System.out.println(str);

   // 创建一个 Calendar 用于比较时间
   Calendar calendarNew = Calendar.getInstance();

   // 设定为 5 小时以前,后者大,显示 -1
   calendarNew.add(Calendar.HOUR, -5);
   System.out.println("时间比较:" + calendarNew.compareTo(calendar));

   // 设定7小时以后,前者大,显示 1
   calendarNew.add(Calendar.HOUR, +7);
   System.out.println("时间比较:" + calendarNew.compareTo(calendar));

   // 退回 2 小时,时间相同,显示 0
   calendarNew.add(Calendar.HOUR, -2);
   System.out.println("时间比较:" + calendarNew.compareTo(calendar));
}


明天计划的事情:

=_=




返回列表 返回列表
评论

    分享到