关于“设计4个线程,其中两个线程对j加1,另外两个线程对j减1”的问题

1、代码

[java]  view plain  copy
  1. public class Test {  
  2.   
  3.     public static void main(String[] args) {  
  4.           
  5.         Data data = new Data();  
  6.         Add add = new Add(data);  
  7.         Dec dec = new Dec(data);  
  8.         for (int i = 0; i < 2; ++i) {  
  9.             new Thread(add, "线程A").start();  
  10.             new Thread(dec, "线程B").start();  
  11.         }  
  12.     }  
  13. }  
  14. class Data {  
  15.       
  16.     private int j = 0;  
  17.       
  18.     public synchronized void add(){      
  19.         System.out.println(Thread.currentThread().getName() + "对j加1,当前j=" + (++j));    
  20.     }   
  21.       
  22.     public synchronized void dec(){     
  23.         System.out.println(Thread.currentThread().getName() + "对j减1,当前j=" + (--j));    
  24.     }    
  25. }    
  26. class Add implements Runnable{   
  27.       
  28.     private Data data;    
  29.       
  30.     Add(Data data){            
  31.         this.data= data;    
  32.     }    
  33.          
  34.     public void run() {    
  35.         data.add();        
  36.     }    
  37. }    
  38. class Dec implements Runnable{   
  39.       
  40.     private Data data;    
  41.       
  42.     Dec(Data data){   
  43.         this.data= data;    
  44.     }    
  45.          
  46.     public void run() {    
  47.         data.dec();        
  48.     }    
  49. }  
2、运行结果

[plain]  view plain  copy
  1. 线程A对j加1,当前j=1  
  2. 线程A对j加1,当前j=2  
  3. 线程B对j减1,当前j=1  
  4. 线程B对j减1,当前j=0  

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值