软件构造学习笔记7--复习中遇到的一些重点的总结

总结主要源于复习与参考往届试卷中发现的自己的易错点、不清楚的点。
可变性与不可变性:
对于弱不可变性:允许有R值的变化,但是A值不可变,在外部观察视角看应是不变的,具体点的判断方法:执行任何方法的结果都不变;
对于强不可变性:不允许任何变化,即使是R值也不可变
表示泄露:
当对某个ADT外部的其它变量的操作会导致ADT内部发生变化才能认为有表示泄露,有方法返回可变类型并不一定存在表示泄露,可以使用防御式拷贝来防止该种表示泄露
线程Interrupt:
对于一般情况下的线程,被请求interrupt后只会置相关联的一个boolean属性为true,不会有别的响应;对于正在sleep\wait\join中的线程,会抛出InterruptedException并复原boolean属性的值为false

最后一点对于我们的实际编程实际上有很大影响,在并发编程中,很难去控制线程间的执行顺序,即使使用了sleep方法希望在此之中响应interrupt,也有可能另一个线程对其的中断请求在其调用sleep前就已经发生,此时若后续没有对isInterrupted的检查就不会发现这一点,无法做出相应;同样,若对于isInterrupted的检查不放在一个循环中,那也有可能检查的时候还没有收到中断请求但是之后收到了,同样得不到处理。这种执行顺序的不可控性带来了很大阻碍,因此同步和锁的机制会更加安全好用一些,利用该机制可以保证一个线程的独享执行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值