1.7.7释放锁的不良后果

使用stop()释放锁将会给数据造成不一致的结果。如果出现这样的情况,程序处理的数据就有可能遭到破坏,最终导致程序执行的流程出错,一定要特别注意。

/**
 * @author wuyoushan
 * @date 2017/3/27.
 */
public class SynchronizedObject {
    private String username="a";
    private String password="aa";

    public void printString(String username,String password){
        try{
            this.username=username;
            Thread.sleep(100000);
            this.password=password;
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

/**
 * MyThread线程测试
 * @author wuyoushan
 * @date 2017/3/21.
 */
public class MyThread extends Thread {

    private SynchronizedObject object;

    public MyThread(SynchronizedObject object) {
        this.object = object;
    }

    @Override
    public void run() {
       object.printString("b","bb");
    }
}

/**
 * @author wuyoushan
 * @date 2017/3/20.
 */
public class Run {
    public static void main(String[] args){
        try{
            SynchronizedObject object=new SynchronizedObject();
            MyThread thread=new MyThread(object);
            thread.start();
            Thread.sleep(500);
            thread.stop();
            System.out.println(object.getUsername()+" "+object.getPassword());
        }catch (InterruptedException e){
            e.printStackTrace();
        }
    }
}

程序的运行结果如下:

b aa

由于stop()方法已经在JDK中被标明是“作废/过期”的方法,显然它在功能上具有缺陷,所以不建议在程序中使用stop()方法

摘选自 java多线程核心编程技术-1.7.7

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,680评论 25 708
  • 定制日期格式您可以通过 IBM® TRIRIGA® Application Platform 随附的产品定义不同的...
    Seachal阅读 1,080评论 0 0
  • 为什么总是走不出自己的舒适圈?是时候该改变了,没有人能阻止你追求更高的人生。 丁字形知识结构怎么建?工作怎么努力?...
    Tina26阅读 133评论 0 0