多线程在开发中的注意事项

在多线程开发中,同步是确保资源安全访问的重要手段,但过度使用可能导致性能下降和死锁。非原子操作如int类型变量的访问通常安全,而long和double需volatile修饰保证内存一致性。数组、HashMap等对象需同步处理,final字段可提高效率。避免死锁的方法包括限制同步范围、设置wait超时和使用性能分析工具如Borland的Profiler。
摘要由CSDN通过智能技术生成

    在开发中,对同一资源的访问需要考虑同步的问题,但是同步的使用需要慎重,过多的使用同步往往会降低性能,甚至有可能发生死锁,其实同步只是在复杂的情况下不得已而为之的一种办法。

    在使用同步的时候要考虑两个问题:1.是不是一定要使用同步 2.被访问的资源是否属于原子型的

    在一些特定的情况下,多线程访问同一个资源是不需要同步的,比如读取操作,针对方法内局部变量的写操作也不需要同步,同步的关键在于类变量的访问操作,一旦设置了类变量,那么就要考虑同步。根据banq的资料,整理如下:

 

public class Test {

    private int state;

    private volatile long stateLong;

    private byte[] states = null;

    private String stateStrs = null;

    private final Object stateObject = null;

    private HashMap map = new HashMap;

    private Hashtable hashTable = new Hashtable;

 

    public void setState(int state) {
        this.state = this.state + state;

    }

    ...

}

   

    在上面的Test类中,有5个类变量,分别代表5中不同的类变量:

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值