08 2018 档案
摘要:停止线程的几种方式 一般的逻辑停止 注意:上面的代码如果在线程的运行逻辑中有调用阻塞的方法,比如arrayBlockQueue的put操作,就会一直等待插入,直到队列有空位位置。就会导致cancel的判断永远不会执行。所以可以采用中断的方式 中断 采用interrupt()。对线程设置为中断标志。设
阅读全文
摘要:1.线程池 众所周知创建大量线程时代价是非常大的: 线程的生命周期开销非常大 :创建需要时间,导致延迟处理请求,jvm需要分配空间。 资源消耗 :线程需要占用空间,如果线程数大于可用的处理器数量,那么线程就会闲置,这给Gc造成压力。线程在竞争cpu的时候也会造成性能开销,所以线程不是越多越好,使用不
阅读全文
摘要:1.同步容器类 它们是线程安全的 1.1 vector和hashtable。 和Collections.synchronizeXxx()一样。实现方式就是在每个方法里面加入synchronize代码块包着。加锁对象为当前对象 但对于复合操作,还是有风险。 例如 有两个线程分别执行:检查 获取元素,检
阅读全文
摘要:我现在是家里爸妈唯一的儿子。16年转了IT这一行,工资虽然好点,但是开销也上去了。另外爸妈也老了,我外婆这几年病了,装了心脏起搏器。我舅舅跟我说,开销就已经花了十多万了。这件事给我的冲击很大,钱再多,在病面前也是渣渣。一人得病,拖垮一家。 所以病起来,真的是钱就像水一样。无底洞似的。近来关注保险这一
阅读全文
摘要:1.重要的属性 可见性,不变性,原子性 1.1可见性 当一个线程修改某个对象状态的时候,我们希望其他线程也能看到发生后的变化。 _在没有同步的情况下,编译器和处理器会对代码的执行顺序进行重排。以提高效率。重排后的顺序是不可预知的,所以在多线程中无法对执行结果进行判断_ 看下面的代码 上面的执行结果可
阅读全文
摘要:"本文参考引用,本人整理个人理解。地址点击" 1.实现原理 synchronized可以保证方法或者代码块在运行时,同一时刻只有一个方法可以进入到临界区,同时它还可以保证共享变量的内存可见性。 下面是一些同步的基础 1. 普通同步方法,锁是当前实例对象; 2. 静态同步方法,锁是当前类的class对
阅读全文
摘要:1.线程安全的定义 当多个线程访问某个类时,不管允许环境采用何种调度方式或者这些线程如何交替执行,这个类都能表现出正确的行为 如果一个类既不包含任何域,也不包含任何对其他类中域的引用。则它一定是无状态的对象,无状态对象一定是线程安全的 2.竞态条件 并发编程中,由于不恰当的执行时序导致不正确的结果。
阅读全文

浙公网安备 33010602011771号