非线程安全

来源:互联网 发布:车削编程软件 编辑:程序博客网 时间:2024/05/16 08:34
非线程安全:

主要是指多个线程对同一个对象中的同一个实例变量进行进行操作时会出现值被更改、值不同步的情况,进而影响程序的执行流程。

代码示例:

//非线程安全实例class LoginServlet{  //本类模拟一个Servlet组件private static String usernameRef;private static String passwordRef;synchronized public static void doPost(String username,String password){try{usernameRef = username;if(username.equals("a")){Thread.sleep(5000);}passwordRef = password;System.out.println("username= " + usernameRef +"    password = " + password);}catch(InterruptedException e){e.printStackTrace();}}  //非线程安全运行结果:输出结果不匹配       //解决办法,在doPost方法前加关键字synchronized,给方法doPost加锁}  //LoginServlet 结束class ALogin extends Thread{    @Override    public void run(){        LoginServlet.doPost("a","a_password");            }    } //ALogin 结束class BLogin extends Thread{    @Override    public void run(){        LoginServlet.doPost("b","b_password");    }} //BLogin 结束public class Thread_LoginServlet{    public static void main(String [] args){        ALogin a=new ALogin();        BLogin b=new BLogin();        a.start();        b.start();    }} //Thread_LoginServlet 结束 (main方法)


原创粉丝点击