一、多线程共享变量
方式一:变量共享
public class AddMinusOperate { private int j=5; public synchronized void add() { j++; } public synchronized void minus() { j--; } class AddThread implements Runnable { public void run() { add(); } } class MinusThread implements Runnable { public void run() { minus(); } } public static void main(String [] args) { AddMinusOperate addMinusOpt = new AddMinusOperate(); for(int i=0;i<2;i++) { AddThread addThread = addMinusOpt.new AddThread(); new Thread(addThread).start(); MinusThread minusThread = addMinusOpt.new MinusThread(); new Thread(minusThread).start(); } } }
方式二:以参数传递的方式共享变量
public class OperateValue { private int operateValue ; /**设置对应getter/setter方法**/ } public AddThread implements Runnable { private OperateValue optValue; public AddThread(OperateValue optValue) { this.optValue = optValue; } public void run() { synchronized(this) { optValue.setOperateValue(optValue.getOperateValue + 1); } } } public MinusThread implements Runnable { private OperateValue optValue; public MinusThread(OperateValue optValue) { this.optValue = optValue; } public void run() { synchronized(this) { optValue.setOperateValue(optValue.getOperateValue -1 1); } } } public TestMain { public static void main(String [] args) { OperateValue optValue = new OperateValue(); optValue.setOperateValue(5); for(int i=0;i<2;i++) { AddThread addThread = new AddThread(optValue); new Thread(addThread).start(); MinusThread minusThread = new MinsThread(optValue); new Thread(minusThread).start(); } } }
原文:http://www.cnblogs.com/moonandstar08/p/5267595.html