方法内的变量是线程安全的

匿名 (未验证) 提交于 2019-12-03 00:36:02
package com.freeflying.thread.sync; /**  * @ClassName: MethodVarThreadSafe    * @Description:方法内的变量是线程安全的  * @author freeflying  * @date 2018年6月25日  */ public class MethodVarThreadSafe { 	public static void main(String[] args) { 		MethodVarThreadSafeEx safeEx=new MethodVarThreadSafeEx(); 		MethodVarThreadSafeA safeA=new MethodVarThreadSafeA(safeEx); 		safeA.start(); 		MethodVarThreadSafeB safeB=new MethodVarThreadSafeB(safeEx); 		safeB.start(); 	} } class MethodVarThreadSafeEx{ 	public void add(String username) { 		try { 			int num = 0; 			if("a".equals(username)) { 				num=100; 				System.out.println("a set over"); 				Thread.sleep(2000); 			}else { 				num=200; 				System.out.println("b set over"); 			} 			System.out.println(username + " num = "+num); 		}catch (Exception e) { 			// TODO: handle exception 		} 	} } class MethodVarThreadSafeA extends Thread{ 	private MethodVarThreadSafeEx safe; 	public MethodVarThreadSafeA(MethodVarThreadSafeEx safe) { 		this.safe=safe; 	} 	@Override 	public void run() { 		safe.add("a"); 	} } class MethodVarThreadSafeB extends Thread{ 	private MethodVarThreadSafeEx safe; 	public MethodVarThreadSafeB(MethodVarThreadSafeEx safe) { 		this.safe=safe; 	} 	@Override 	public void run() { 		safe.add("b"); 	} }
结果:
b set over b num = 200 a set over a num = 100
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!