JAVA编程:线程间共享数据(实用sy…

本文介绍了通过使用封装数据的类来实现监测服务器连接状态的功能。详细解释了类的构造方法、同步代码段以及如何通过两个类构造方法来操作数据。重点突出了同步机制在多线程环境下的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本例子为实现“监测服务器连接状态”功能的代码片段:
包装数据的类RightAnswer:
//----------------------------------------------------------------------------------------
private class RightAnswer{
   public RightAnswer(int rightAnswer){
       this.rightAnswer=rightAnswer;
   }
   public int getValue(){//读取数据
       synchronized(this){
           return rightAnswer;
       }
   }
   public void valueMinus(){//数据递减1
       synchronized(this){
           rightAnswer--;                    
       }    
   }
   public void valueAdd(){//数据递增1
       synchronized(this){
           rightAnswer++;                    
       }    
   }
   int rightAnswer;
}
//----------------------------------------------------------------------------------------=
synchronized(this){}:同步代码段,花括号内的操作一个时间内只能有一个线程执行,因为这个类的三个方法均用this加锁,这三个方法在同一时间内也只能执行一个,如此保证了对数据操作的有效性

操作这个RightAnswer类对象的两个类,构造方法时传入RightAnswer类对象,实现对象的引用
//-----------------------------------------------------------------------------------------
private class ServerAnswerTimerTask extends TimerTask{
   public ServerAnswerTimerTask(RightAnswer rightAnswer){                
       this.rightAnswer=rightAnswer;
   }
   @Override
   public void run() {
       rightAnswer.valueMinus();
   }
   
   RightAnswer rightAnswer;
}

private class RightAnswerAddThread implements Runnable{
   public RightAnswerAddThread(RightAnswer rightAnswer){
       this.rightAnswer=rightAnswer;
   }
   @Override
   public void run() {
       this.rightAnswer.valueAdd();
   }
   RightAnswer rightAnswer;
}
//-----------------------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值