zoukankan      html  css  js  c++  java
  • Java 并发笔记

    1. 避免一个线程同时获取多个锁。
    2. 避免一个线程在锁内同时占用多个资源,尽量保证每个锁只占用一个资源。
    3. 尝试使用定时锁,使用lock.tryLock(timeout)来替代使用内部锁机制。
    4. 对于数据库锁,加锁和解锁必须在一个数据库连接里,否则会出现解锁失败的情况。

    在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当的话,它比synchronized的使用和执行成本更低,因为它不会引起线程上下文的切换和调度。

    valatile的两个作用:
    1.声明变量内存可见性
    当一个线程修改一个共享变量时,另外一个线程总是能读到这个修改后的值

    (1)对于写操作:对变量更改完之后,要立刻写回到主存中。
    (2)对于读操作:对变量读取的时候,要从主存中读,而不是缓存。

    2.禁止指令的重排序
    if (a == null){
    Object a = new Object;
    }
    附:什么是指令重排序?
    CPU在执行指令时,在保证执行结果一致的情况下,对部分代码进行重新排序操作;

    int i = 1;
    int b = 2;
    两个语句执行的顺序可能会交换
    
  • 相关阅读:
    linux远程桌面连接 VNC Server
    linux内核 mtd分区
    STC15控制数码管 38译码器
    DS12C887实时时钟
    printf打印字节调试
    LED 控制卡 单元板 接口引脚定义
    linux守护进程start-stop-daemon启动服务
    相机速率计算
    CodeWarrior IDE烧写介绍
    让 Web 站点崩溃最常见的七大原因
  • 原文地址:https://www.cnblogs.com/bigorang/p/11320198.html
Copyright © 2011-2022 走看看