多线程
xiaoblank
正在努力的小小程序猿。
展开
-
三种线程协作通信的方式:suspend/resume、wait/notify、park/unpark的区别
一、suspend/resumesuspend/resume目前已经被弃用,java并不推荐使用该种方法,因为这种方法稍有不慎就很进入到死锁状态。比如:1、第一个线程在同步synchronized中调用suspend()进行等待,在另一个同步synchronized中调用resume()进行唤醒,但是由于同步锁的机制,拿到锁后挂起了,而另一个线程,要等到释放锁后才进行唤醒,这样就一直进入了等待,造成死锁。2、resume在suspend之前执行,在执行suspend时,先进行了休眠,而就在休眠过程中原创 2021-08-02 11:44:32 · 423 阅读 · 0 评论 -
scheduleAtFixedRate和scheduleWithFixedDelay的区别
1)scheduleAtFixedRate:可以传入runnable,定制第一次的初始化执行时间,周期时间,单位时间-------创建并执行一个周期性任务,过了给定的初始延迟时间(1min执行一次or其他时间),会第一次被执行。执行过程中发生异常,任务停止。2)scheduleWithFixedDelay:和上一种相类似-----创建并执行周期性任务,第一次执行及异常情况A:1s中执行一个任务,每个任务执行时间500ms====两种无区别B:执行任务时间过长,如间隔时间是1s,而执行时间3s====该原创 2021-07-22 17:37:00 · 2952 阅读 · 0 评论