【324天】我爱刷题系列083(2017.12.26)

叨叨两句

  1. ~

牛客网——java专项练习062

1

Math.round(11.5) 等于多少 (). Math.round(-11.5) 等于多少 ( )
正确答案: C java

A 11 ,-11
B 11 ,-12
C 12 ,-11
D 12 ,-12算法

floor : 意为地板,指向下取整,返回不大于它的最大整数 ceil : 意为天花板,指向上取整,返回不小于它的最小整数 round : 意为大约,表示“四舍五入”,而四舍五入是往大数方向入。Math.round(11.5)的结果为12,Math.round(-11.5)的结果为-11而不是-12
Math类中提供了三个与取整有关的方法:ceil,floor,round,这些方法的做用于它们的英文名称的含义相对应,例如:ceil的英文意义是天花板,该方法就表示向上取整,Math.ceil(11.3)的结果为12,Math.ceil(-11.6)的结果为-11;floor的英文是地板,该方法就表示向下取整,Math.floor(11.6)的结果是11,Math.floor(-11.4)的结果-12;最难掌握的是round方法,他表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,因此,Math.round(11.5)的结果是12,Math.round(-11.5)的结果为-11.

2

关于sleep()和wait(),如下描述错误的一项是( )
正确答案: D 安全

A sleep是线程类(Thread)的方法,wait是Object类的方法;
B sleep不释放对象锁,wait放弃对象锁
C sleep暂停线程、但监控状态仍然保持,结束后会自动恢复
D wait后进入等待锁定池,只有针对此对象发出notify方法后得到对象锁进入运行状态多线程

Java中的多线程是一种抢占式的机制,而不是分时机制。抢占式的机制是有多个线程处于可运行状态,可是只有一个线程在运行。 
共同点 : 
1. 他们都是在多线程的环境下,均可以在程序的调用处阻塞指定的毫秒数,并返回。 
2. wait()和sleep()均可以经过interrupt()方法 打断线程的暂停状态 ,从而使线程马上抛出InterruptedException。 
若是线程A但愿当即结束线程B,则能够对线程B对应的Thread实例调用interrupt方法。若是此刻线程B正在wait/sleep/join,则线程B会马上抛出InterruptedException,在catch() {} 中直接return便可安全地结束线程。 
须要注意的是,InterruptedException是线程本身从内部抛出的,并非interrupt()方法抛出的。对某一线程调用 interrupt()时,若是该线程正在执行普通的代码,那么该线程根本就不会抛出InterruptedException。可是,一旦该线程进入到 wait()/sleep()/join()后,就会马上抛出InterruptedException 。 
不一样点 :  
1.每一个对象都有一个锁来控制同步访问。Synchronized关键字能够和对象的锁交互,来实现线程的同步。 
sleep方法没有释放锁,而wait方法释放了锁,使得其余线程可使用同步控制块或者方法。 
2.wait,notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep能够在任何地方使用 
3.sleep必须捕获异常,而wait,notify和notifyAll不须要捕获异常 
4.sleep是线程类(Thread)的方法,致使此线程暂停执行指定时间,给执行机会给其余线程,可是监控状态依然保持,到时后会自动恢复。调用sleep不会释放对象锁。
5.wait是Object类的方法,对此对象调用wait方法致使本线程放弃对象锁,进入等待此对象的等待锁定池,只有针对此对象发出notify方法(或notifyAll)后本线程才进入对象锁定池准备得到对象锁进入运行状态。