软件构造考前复习

对于Java中的构造函数,它是默认互斥的,所以我们不需要加锁。
并不是某一行语句就算一个原子操作,原子操作由JVM决定。但是程序员可以通过加锁的方法设置原子操作。
线程休眠sleep()方法不会释放锁,仍然保持同步控制,而wait()方法会让出资源,释放锁。

对于interrupt()方法,并不是强制中断线程的,而是由线程自己觉得中断不中断。
我们可以用isInterrupted()或者Interrupted()方法来判断线程是否中断,要注意的是Interrupted()方法会复位中断标识符。

创建线程有两种方法,一种是通过Thread类继承来派生子类,只需要重写run方法,然后start()即可。另一种是通过Runnable接口来创建Thread对象,也是重写run方法,然后start(),要注意的是调用的是thread类中的start()方法而不是run()方法。

路径覆盖>分支覆盖>语句覆盖
对于Java中的设计模式
1.访问者模式,这是Java中唯一一种双向委托的模式,即在ADT中预留一个accept visitor类的接口,由子类来实现这个方法,这个方法的参数为visitor,然后在这个方法中使用委托调用visitor类的visitor方法,在visitor类中可以使用多态来visit不同的”商品“。
2.迭代器模式,是委托到外部的iteratro对象来进行迭代的。或者说我们可以在类的内部实现一个迭代器。

判断两个对象相等需要从AF和Observer方法两个角度说明。

list使用set方法之前需要先初始化该位置的元素,也就是该位置必须先有元素吗,否则list.set(i,x)就会报错。

对于重写,Java是在运行时判断调用父类的方法还是子类的方法的,而对于重载则是编译阶段。

对于正则表达式,\s表示空白符,包括空格,换行和回车。\也可以表示转义,表示\之后的字符。^表示除了之后的字符的所有字符。对于量词,要区别?和*和+,?表示0个或者1个,*表示0个或者多个,而+表示1个或者多个。另外在正则表达式中,一元符号优先级是大于二元符号的,所以abc+并不表示多个abc,而是表示一个ab,后面跟着多个c,这点需要注意。

对于线程安全来说,即使我们获得了线程安全的集合类,例如使用collections.synchronizedList()获得了线程安全的list,也不代表在多个线程的多个操作中就一定线程安全。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值