| 本帖最后由 冉世友 于 2013-1-5 21:18 编辑 
 复制代码这样能达到操作共享数据的效果吗?
/*
 * 设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1
 *将Runnable对象定义为内部类,把共享数据
 * 和操作操作共享数据的方法封装到另一个对象中。
 */
public class MutiThreadShareData2 {
        public static void main(String[] args) {
                final ShareData1 shareData1 = new ShareData1();
                for(int i=0; i<2; i++){
                        new Thread(new Runnable(){
                                @Override
                                public void run() {
                                        shareData1.increase();
                                }
                        }).start();
                        
                        new Thread(new Runnable(){
                                @Override
                                public void run() {
                                        shareData1.decrease();
                                }
                        }).start();
                }
                
                try {
                        Thread.sleep(1000);
                } catch (InterruptedException e) {
                        
                        e.printStackTrace();
                }
                System.out.println(shareData1.getJ());
        }
}
class ShareData1 {
        private int j = 100 ;
        
        public synchronized void increase(){
                j++;
        }
        
        public synchronized void decrease(){
                j--;
        }
        
        public int getJ(){
                return j;
        }
}
 |