当前位置:编程学习 > JAVA >>

线程两加两减

print?package com.thread; 
/**
 * 设计4个线程,其中两个线程对j加1,另外两个对j减1
 * 
 *
 */ 
public class ThreadTest2 { 
     
    //外部内成员变量j,共享于两个内部类  
    private int j;  
     
    public static void main(String[] args) { 
        /**
         * 外部类使用内部类实例时,需先实例化外部类
         * 因为内部类可以调用外部类的人员成员,
         * 当没有外部类实例的时候也就没有这些成员的内存空间,
         * 内部类在实例化的时候,调用外部类的成员就会出错,
         * 所以需要使用外部类的实例 + 点 + new 的方式实例化一个新的内部类
         */ 
        ThreadTest2 test2=new ThreadTest2(); 
        Inc inc=test2.new Inc(); 
        Dec dec=test2.new Dec(); 
        for (int i = 0; i < 2; i++) { 
            new Thread(inc).start(); 
            new Thread(dec).start(); 
        } 
    } 
     
     
    /**
     * 加1方法
     */ 
    public synchronized void inc() { 
        j++; 
        System.out.println(Thread.currentThread().getName()+":inc()="+j); 
    } 
     
    /**
     * 减1方法
     */ 
    public synchronized void dec() { 
        j--; 
        System.out.println(Thread.currentThread().getName()+":dec()="+j); 
    } 
     
     
     
//加1的内部类  
    class Inc implements Runnable{ 
        public void run() { 
            for (int i = 0; i < 10; i++) { 
                inc(); 
            } 
        } 
    } 
     
//减1的内部类  
    class Dec implements Runnable{ 
        public void run() { 
            for (int i = 0; i < 10; i++) { 
                dec(); 
            } 
        } 
    } 

package com.thread;
/**
 * 设计4个线程,其中两个线程对j加1,另外两个对j减1
 *
 *
 */
public class ThreadTest2 {
 
 //外部内成员变量j,共享于两个内部类
 private int j;
 
 public static void main(String[] args) {
  /**
   * 外部类使用内部类实例时,需先实例化外部类
   * 因为内部类可以调用外部类的人员成员,
   * 当没有外部类实例的时候也就没有这些成员的内存空间,
   * 内部类在实例化的时候,调用外部类的成员就会出错,
   * 所以需要使用外部类的实例 + 点 + new 的方式实例化一个新的内部类
   */
  ThreadTest2 test2=new ThreadTest2();
  Inc inc=test2.new Inc();
  Dec dec=test2.new Dec();
  for (int i = 0; i < 2; i++) {
   new Thread(inc).start();
   new Thread(dec).start();
  }
 }
 
 
 /**
  * 加1方法
  */
 public synchronized void inc() {
  j++;
  System.out.println(Thread.currentThread().getName()+":inc()="+j);
 }
 
 /**
  * 减1方法
  */
 public synchronized void dec() {
  j--;
  System.out.println(Thread.currentThread().getName()+":dec()="+j);
 }
 
 
 
//加1的内部类
 class Inc implements Runnable{
  public void run() {
   for (int i = 0; i < 10; i++) {
    inc();
   }
  }
 }
 
//减1的内部类
 class Dec implements Runnable{
  public void run() {
   for (int i = 0; i < 10; i++) {
    dec();
   }
  }
 }
}


 

补充:软件开发 , Java ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,