Java -- Thread -- Collection -- 3传统线程互斥技术

线程安全问题例子:银行转账

       同一个账户一边进行出账操作(自己交学费),另一边进行入账操作(别人给自己付款),线程不同步带来的安全问题。

示例:逐个字符的方式打印字符串

 

注意:

  内部类不能访问局部变量,要访问需加final

  静态方法中不能创建内部类的实例对象

  打印结果发现的问题:线程不同步所致,两个线程都在使用同一个对象

互斥方法:

       a、同步代码块

              synchronized (lock){}

       b、同步方法 

              方法返回值前加synchronized

              同步方法上边用的锁就是this对象

              静态同步方法使用的锁是该方法所在的class文件对象

使用synchronized关键字实现互斥,要保证同步的地方使用的是同一个锁对象

public synchronized void output(String name)
    {
    int len = name.length();
    这里就不要再加同步了,加上极易出现死锁
    for (int i=0; i<len; i++)
        SOP(name.charAt(i));逐个字符打印
    SOP();换行
}

 

posted on 2016-04-24 19:42  yeatschen  阅读(92)  评论(0)    收藏  举报

导航