下面的代码是有2个线程,一个线程对共享变量加1,另一个线程对共享变量减1的实现
package com.lyj; /** * 多个线程操作同一个对象。 * 执行代码不同,将要执行的代码封装在一个共享变量中,然后传递给各自的Runnable, 在run方法操作不同的执行的代码 */ public class MultiThreadShareDataDemo { /* * 有2个线程,一个线程对共享变量加1,另一个线程对共享变量减1 */ public static void main(String[] args) { ShareData sd = new ShareData(); new Thread(new MyRunnable1(sd)).start(); new Thread(new MyRunnable2(sd)).start(); } } class MyRunnable1 implements Runnable { private ShareData sd; public MyRunnable1(ShareData sd) { this.sd = sd; } @Override public void run() { sd.increate(); } } class MyRunnable2 implements Runnable { private ShareData sd; public MyRunnable2(ShareData sd) { this.sd = sd; } @Override public void run() { sd.decreate(); } } // 共享对象 class ShareData { private int count = 100; public synchronized void increate() { count++; } public synchronized void decreate() { count--; } }