非线程安全

非线程安全:

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

代码示例:

//非线程安全实例
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方法)


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值