锁测试和超时

  • 线程在调用lock方法获得另一个线程所持有的锁的时候,很可能发生阻塞。应该更加谨慎地申请锁。tryLock方法试图申请一个锁,在成功获得锁后返回true,否则,立即返回false,而且线程可以立即离开去做其他事情。
if(myLock.tryLock()){
  //获得锁
   try{...}
   finally {
       myLock.unlock();
   }
}else {
   //去做其他事情
}
  • 可以调用tryLock时,使用超时参数,像这样
if(myLock.tryLock(100, TimeUnit.MILLISECONDS))
  • TimeUnit是一个枚举类型,可以取的值包括TimeUnit.SECONDS(秒),TimeUnit.MILLISECONDS(毫秒), TimeUnit.MICROSECONDS(微秒)和TimeUnit.NANOSECONDS(纳秒)
  • lock方法不能被打断。如果一个线程在等待获得一个锁时被中断,中断线程在获得锁之前一直处于阻塞状态。如果出现死锁,那么,lock方法就无法终止。
  • 然而,如果调用带有用超时参数的tryLock,那么如果线程在等待期间被打断,将抛出InterruptedException异常。这是一个非常有用的特性,因为允许程序打破死锁。
  • 也可以调用lockInterruptibly
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
单片机电子密码的设计 1. 系统功能要求 通过学习的数电、模电、单片机原理的相关知识,利用所学的综合理论知识,设计单 片机电子密码。本系统由单片机系统、LCD显示器和报警系统等组成。要求具有有键盘 输入、LED数码管显示、开超时报警基本的密码的功能,主要通过密码按键预设输 入密码,,解后能通过按键手动复位,误输入密码三次后自动报警,鸣叫并退出,简 单易懂、使用方便、安全性能高等。 2. 设计方案描述 该方案采用一种是用以AT89C52为核心的单片机控制方案。这样单片机可具有足够的 空余硬件资源实现其它的扩充功能,利用单片机灵活的编程设计和丰富的IO端口,及其控 制的准确性,实现最基本的密码功能。其原理如图2-1所示。 图2-1单片机控制方案 3. 系统硬件的设计 单片机电子密码的总电路图如图3.1 。该设计是用以AT89C52单片机为中心。在这个设计中有8位LCD数码管的数字显示,采 用的是行列键盘,比较简单易操作。 图3-1 3.1.行列键盘的设计 各按键功能为P1.0-P1.7为"0"- "7"数字键,P3.0为"8"键,P3.4为"9"键,P3.1为开开始键,P3.2为重输键,P3.3确认键。 p3.6时间设定,长按住为"分调整"-"时调整"-退出,短按为省电-分加1- 时加1,P3.5为分或时减1,P3.7为小喇叭口。本设计采用行列设计如图3—1—1。 图3—1—1 3.2.单片机系统 设计采用的是AT89C52单片机如图3—2—2。该单片机性能稳定性高,成本低。单片机引脚 接口P1.0到P1.7分别接到LCD显示数码管, P2.0到P2.7通过放大器分别接到LCD数码管的另一端。都是作为数码管显示电路输入端口 ,使得数码管显示各功能的结果。 图3-2—2 单片机系统 3.3.报警电路的设计 报警电路图如图3—3—3所示。密码输入值的比较主要有两个部分,密码位数与内容,任何 一个条件不满足,都会产生出错信息。利用设定的行列键盘输入密码并确认,如果连续 三次出错,就会出现报警信息,LCD显示出错信息,蜂鸣器鸣叫,P3.7口红灯亮并退出开 程序。 图3-3—3 报警系统电路图 4. 系统软件的设计 4.1.主程序 主程序流程图如图4-1 图4-1 4.2.键盘扫描的设计 键盘采用查询的方式,放在主程序中,当没有按键按下的时候,单片机循环主程序, 一旦有按键按下,便转向相应的子程序处理,处理结束再返回。 4.3.开报警程序的设计 报警功能程序的设计方法:设置40H- 45H为原始密码存放单元(预设为123456),06H为开状态标志,=1为开状态,=0为时钟 状态。按下P3.1,确定开键,等待开开始,利用P1.0到P1.7,P3.0,P3.4数字键输 入6位密码,密码输入完毕,然后按P3.3确定键。输入正确则开。当连续三次输入密码 出错时,则会出现报警信息并退出开程序。 其程序流程如图 所示4—3. 图4—3 5.系统调试 5.1.硬件调试 硬件调试时可先检查印制板及焊接的质量情况,在检查无误后可通电检查LCD显示器 的点亮状况,若亮度不理想可以调整P0口的电阻大小,一般情况下取200Ω电阻即可获得 满意的亮度效果。实验室制作时可结合示波器测试晶振及P0、P2端口的波形情况进行综 合硬件测试分析。 5.2.软件调试 软件调试在Wave 或Keil C51编译器下进行,源程序编译及仿真调试应分段或以子程序为单位一个一个进行,最后 可结合硬件实时调试。 5.3.性能分析 由于计时中断程序中加了中断延时误差处理,所以实际计时的走时精度非常高,可满 足多种场合的应用需要,另外上电时具有一个滚动显示子程序,可以方便显示制作日期等 信息。 6.结论 该电子密码充分利用了51单片机软,硬件资源,具有开,三次密码错误自动退出 的功能。如果能引入了智能化分析功能,提高了系统的可靠性和安全性,应用于生活中 ,那将会给人们省去了用传统的麻烦与不安全性。另外通过学习并设计单片机电子密 码,使自己对课本上的知识可以应用于实际,使得理论与实际相结合,加深了自己对 课本知识的更好理解。对我们学生来说,理论与实践同样重要,这是我们以后在工作中 说明自己能力的一个重要标准。 7.参考文献 [1]楼然苗,李光飞.51系列单片机设计实例(第2版)[M].北京:北就航空航天大学出版 社,2006.02. [2]李光飞等.单片机课程设计实例指导[M]. 北京:北就航空航天大学出版社,2004.09. [3] 何立民.MCS-51单片机应用系统设计[M].北航出版社,1990年 [4] 霍孟友,王爱群.单片机原理与应用——学习概要及题解[M].机械工业出版社,2005年 李群芳等《单片微型计算机及接口技术》,电子工业出版社 [
为了测试 Redis 分布式,你可以按照以下步骤进行操作: 1. 确保你已经安装了 Redis,并且可以通过命令行或者其他方式连接到 Redis 服务器。 2. 创建一个测试程序或者脚本,用于模拟多个并发请求获取和释放 Redis 分布式的情况。 3. 在测试程序中,使用 Redis 客户端库连接到 Redis 服务器。 4. 在测试程序中,创建多个并发线程或者进程,每个线程或进程都会尝试获取 Redis 。 5. 在每个线程或进程中,使用 Redis 的 SETNX 命令尝试获取。如果 SETNX 返回 1,表示获得了;如果返回 0,表示已经被其他线程或进程持有。 6. 如果获取到,执行需要加的业务逻辑;如果未获取到,等待一段时间后再次尝试获取。 7. 在业务逻辑执行完毕后,使用 Redis 的 DEL 命令释放。 8. 在测试程序中,记录每个线程或进程获取和释放的情况,以及的持有时间和并发冲突情况。 9. 执行测试程序,观察输出结果,检查是否存在并发冲突和的正确获取和释放。 10. 根据测试结果进行分析和调优,修改测试程序或者业务逻辑,以确保 Redis 分布式的正确性和高可用性。 请注意,在测试分布式时,你可能需要考虑以下情况: - 并发请求的数量和频率 - 超时时间和自动释放机制 - 的重入性和可重入性 - 异常情况下的的释放和恢复机制 - 的可靠性和高可用性 以上是一般的测试步骤,你可以根据具体的使用场景和需求进行适当调整和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值