
线程相关
闪耀之城
有人说我很懒,什么都没写。。。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
多线程中使用 Lock 接口的两个实现类 ReentrantLock 和 ReentrantReadWriteLock 实现线程锁
参考博客:Java中ReentrantLock的使用(优快云)参考博客:Java并发编程之ReentrantReadWriteLock详解(优快云)参考博客:ReentrantReadWriteLock读写锁详解(博客园)参考博客:ReentrantReadWriteLock读写锁详解(知乎)ReentrantLock 可重入锁实现了 Lock 接口,是一种独占锁。公平与否取决...原创 2019-08-28 13:14:28 · 223 阅读 · 0 评论 -
线程中sleep()、wait()、join()、yield()方法的使用
/*sleep()方法使当前线程放弃CPU使用权,但是不释放已抢占对象的锁,当前线程阻塞。其他线程可以抢占cpu使用权,但无法抢占对象的锁。sleep 方法允许较低优先级的线程获得运行机会sleep()方法是Thread类的静态方法Thread.sleep(2000);线程休眠2秒thread.interrupt();可以终止线程的阻塞,并抛出InterruptedException异常,...原创 2019-08-22 16:18:58 · 538 阅读 · 0 评论 -
java多线程 interrupt(), interrupted(), isInterrupted()方法区别
interrupt():将调用该方法的线程标记为终止阻塞状态,标记为终止阻塞状态后,如果该方法中遇到wait()、join()、sleep()方法导致线程阻塞,线程阻塞将被终止,并抛出InterruptedException异常,捕获异常后,线程可以继续运行,但如果不捕获异常,线程将无法继续运行。isInterrupted():判断调用该方法的线程是否被标记成了阻塞状态。interrupt...原创 2019-08-22 14:22:22 · 248 阅读 · 0 评论 -
ThreadPoolExecutor的execute()和submit()方法
我希望使用多线程执行一个运算,并且线程执行完毕后我要获取执行结果。其实使用线程池ThreadPoolExecutor的execute()和submit()方法都可以。使用execute()的话,事先定义一个存放返回结果的集合,开辟线程时,将集合的元素作为参数代入自定义的Runnable接口的实现类中,多线程执行完毕后遍历集合即可获得运算结果。使用submit()的话,可以在submit()...原创 2019-08-22 11:23:51 · 19405 阅读 · 0 评论 -
SimpleDateFormat线程不安全的原因以及解决方案
阿里巴巴java开发手册强制要求:5. 【强制】SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static,必须加锁,或者使用 DateUtils 工具类。(org.apache.commons.lang3.time.DateUtils)因为SimpleDateFormat 继承DateFormat,DateFormat中定义了属性ca...原创 2019-08-21 17:36:20 · 570 阅读 · 0 评论 -
使用 ThreadLocal 或 InheritableThreadLocal 对线程内部对象做缓存,实现线程内对象的复用
在java.lang.Thread类中有两个属性ThreadLocal.ThreadLocalMap threadLocalsThreadLocal.ThreadLocalMap inheritableThreadLocals这里的ThreadLocalMap 类相当于一个Map,key 是 ThreadLocal 对象,value 就是存储的值。threadLocals 里边的值...原创 2019-08-21 14:12:49 · 698 阅读 · 0 评论