interrupted

线程的正确停止

二次信任 提交于 2020-03-02 17:04:17
线程停止的几种方式: 线程运行完成,正常停止 执行stop方法,暴力停止,现已弃用 执行interrupt方法,现在使用。 stop方法为什么被弃用? 使用stop方法终止线程会 释放掉此线程锁定的所有的监视器 ,如果线程修改了锁定对象的内容在还没有被正常处理之前线程被终止了。将会造成数据不一致的后果。 例如银行取款的例子:在线程A中进行取款操作,取款操作是一个同步方法,其中共有三个步骤:输入密码,取钱,修改余额。当用户a在输入密码,取钱之后,线程A.stop();线程终止。被修改的余额还没有写回数据库,从而造成数据混乱。 举例说明:首先定义一个操作类Login package com.feng.example; public class Login { private String username="a"; private String password="aa"; synchronized public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } synchronized public String getPassword() { return password; } public void