多线程(中)——常用类和包总结

多线程(中)——常用类和包总结

1.ThreadLocal

ThreadLocal x = new ThreadLocal()

  • 一般用在跨类,跨方法的传递一些值。在一些框架、底层的类中可能会用到,可以避免上层引用代码为了框架当数据的二传手
  • 使用ThreadLocal声明的变量值在不同的线程执行相同的代码时保存的值不会互相影响
  • ThreadLocal的 get()/ set(value)最终会将ThreadLocal作为变量传给ThreadLocalMap
  • 相当于每个线程拥有了只有自己线程才能读取到的,属于自己线程的变量
    eg: 用一个被ThreadLocal声明的变量就可以在不同的线程中使用,并且不用担心值被覆盖

2.Date

Date用来表示时间,Calendar用来操作时间

  • Calendar calendar = Calendar.getInstance()
    用来获取当前时间
    calendar.add(Calendar.DAY_OF_YEAR, 100)
    calendar.add(Calendar.MINUTE, 100)

    使用 Calendar 可以对时间进行加减,括号内的第一个参数是时间单位,第二个参数是数量
    Date date = calendar.getTime()
    可以方便的得到 Date 对象
    calendar.setTime(Date)
    c2.setTimeInMillis(System.currentTimeMillis() - TimeUnit.DAYS.toMillis(10))

    设置时间,参数可以是Date类型的参数,也可以是根据当前时间去set一个毫秒数
    SimpleDateFormat sdf = new SimpleDateFormat(“yyyy年MM月dd日 HH时mm分ss秒”, Locale.SIMPLIFIED_CHINESE)
    SimpleDateFormat 不是线程安全的,对线程共用一个 instance 会有问题
    可以考虑用 ThreadLocal 给每个工作线程分配一个,也可以每次用到的时候创建实例
    calendar.set(2020, Calendar.NOVEMBER, 20, 21, 36, 55)

SimpleDateFormat示例

Date and Time Pattern Result
“yyyy.MM.dd G ‘at’ HH:mm:ss z” 2001.07.04 AD at 12:08:56 PDT
“EEE, MMM d, ''yy” Wed, Jul 4, '01
“h:mm a” 12:08 PM
“hh ‘o’‘clock’ a, zzzz” 12 o’clock PM, Pacific Daylight Time
“K:mm a, z” 0:08 PM, PDT
“yyyyy.MMMMM.dd GGG hh:mm aaa” 02001.July.04 AD 12:08 PM
“EEE, d MMM yyyy HH:mm:ss Z” Wed, 4 Jul 2001 12:08:56 -0700
“yyMMddHHmmssZ” 010704120856-0700
“yyyy-MM-dd’T’HH:mm:ss.SSSZ” 2001-07-04T12:08:56.235-0700
“yyyy-MM-dd’T’HH:mm:ss.SSSXXX” 2001-07-04T12:08:56.235-07:00
“YYYY-'W’ww-u” 2001-W27-3

3.定时方法

Timer timer = new Timer()
timer.scheduleAtFixedRate(要被执行的任务,0,TimeUnit.SECONDS.toMillis(2))

括号内参数:任务,延时,频率

    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论

    “相关推荐”对你有帮助么?

    • 非常没帮助
    • 没帮助
    • 一般
    • 有帮助
    • 非常有帮助
    提交
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

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

    余额充值