用线程操作一个数 二个线程加 二个线程减

package com.test.thread.test;

/**
 * 加一线程与减一线程共同操作一个数
 * 两个问题:  
 * 1、线程同步--synchronized  
 * 2、线程之间如何共享同一个j变量--内部类  
 * 
 * or 使用 volatile 替代 synchronized
 * @author 
 */

public class Test {
    
//    private volatile int i = 0;
    private int i = 0;
    
    
    public static void main(String args[]){
        
        Test test = new Test();
        for(int i = 0; i < 2; i++){
            new Thread(test.new ThreadTest("add")).start();;
            new Thread(test.new ThreadTest("del")).start();;
        }
    }
    
    private synchronized void add(){
        i++;
        System.out.println(Thread.currentThread().getName()+" \t"+" \t" +i);
    }
    private synchronized void del(){
        i--;
        System.out.println(Thread.currentThread().getName()+" \t"+" \t" +i);
    }
    
    class ThreadTest implements Runnable{
        
        private String name;
        
        public ThreadTest(String name){
            this.name = name;
        }
        
        @Override
        public void run() {
            if("add".equals(name)){
                //add
                add();
            }
            if("del".equals(name)){
                //del
                del();
            }
        }
        
    }
}

 

posted on 2014-05-12 15:25  Love I Smile  阅读(365)  评论(0编辑  收藏  举报