2017年12月7日
摘要: 信号量semaphore 允许多个线程同时访问 读写锁ReadWriteLock 在频繁的读写耗时中,读之间不阻塞 倒计时器CountDownLatch obj = new CountDownLatch(10) 设置预“任务”10次,obj.CountDown();次数减一 obj.await()等 阅读全文
posted @ 2017-12-07 20:29 一个帅哥9527 阅读(263) 评论(0) 推荐(0) 编辑
摘要: 基于AQS的锁(比如ReentrantLock)原理大体是这样:有一个state变量,初始值为0,假设当前线程为A,每当A获取一次锁,status++. 释放一次,status--.锁会记录当前持有的线程。当A线程拥有锁的时候,status>0. B线程尝试获取锁的时候会对这个status有一个CA 阅读全文
posted @ 2017-12-07 17:32 一个帅哥9527 阅读(164) 评论(0) 推荐(0) 编辑
摘要: Integer.valueOf()方法基于减少对象创建次数和节省内存的考虑,缓存了[-128,127]之间的数字。此数字范围内传参则直接返回缓存中的对象。在此之外,直接new出来。 在java中,Integer属于不可变对象,也就是对象一旦创建,就不可以修改,如果你的Integer代表1,那么它就永 阅读全文
posted @ 2017-12-07 17:30 一个帅哥9527 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点: (1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你 阅读全文
posted @ 2017-12-07 16:19 一个帅哥9527 阅读(152) 评论(0) 推荐(0) 编辑
摘要: notify 和 wait,他们的操作必须有一个公共的锁对象(就相当于下拉框option 的分组一样) notify通知之后,也要等到当前线程运行完成,才会释放锁,wait线程才能开始拿到锁,执行(wait()方法之后的)程序 Object.wait() Object.nitify() Thread 阅读全文
posted @ 2017-12-07 15:52 一个帅哥9527 阅读(125) 评论(0) 推荐(0) 编辑
摘要: 如题:Thread.stop()不要随意调用 ,因为这样会强制中断线程,如果当时线程存数据未终结的时候,stop,会出现脏数据的情况, 如果想要中断,请用变量的形式进行判断 还可以用中断符号表示: public static boolean Thread.interrupted() //判断是否被中 阅读全文
posted @ 2017-12-07 11:45 一个帅哥9527 阅读(639) 评论(0) 推荐(0) 编辑