A. 当某个线程抛出OutOfMemoryError 时,其他线程有可能不受影响 B. 当大量抛出RuntimeException时,不会影响系统的吞吐量 C. java.lang.Exception是java.lang.Error 的父类 D. finally 块代码一定会被执行
答案:A
A.
在程序内存溢出后,溢出的内存的线程所占的内存会快速释放。一个线程OOM后,其他线程是可以正常运行的,但是内存泄漏之后进而会导致整个系统内存溢出,最终程序不可用。B.
大量抛出RunTimeException是会影响系统的吞吐量的。C.
java.lang.Exception 和 java.lang.Error 都是 java.lang.throwable的子类D. 以下情况finally块不会执行
情况一: try{ System.exit(1); } finally{} ----------------------------------------------- 情况二: try{ while(true) }finally{} ------------------------------------------------ 情况三: 线程被杀死调用函数a(666)返回的结果是: A.666 B. 512 C. 1023 D. 511
答案:C
|= 表示按位或运算,而>> 则为 位向右移
慢慢计算便能找出结果
A. -2.0 -1.0 B. -1.0 -2.0 C. -2 -1 D. 2 1
答案:A
floor:地板 —> 向下取整,返回不大于的最大整数 ceil:天花板 --> 向上取整 返回不小于的最小整数
由于是double类型,小数点依然存在
A.Throwable 是所有异常的根 B.所有异常都是在运行后报错 C. 异常分为Error和Exception D. 有一部分异常编译器会程序员检查并处理
答案:A C D
A. 1 B. 2 C. 3 D. 4
答案:A
A. 平方取中法 B. 除留余数法 C. 再散列法 D. 开放寻址法
答案: C、D
散列表中解决冲突的方法主要有:
开放寻址法再散列函数法链地址法公共溢出区法详情可以参考:散列表解决冲突的方式
A. 调用System.gc()方法 B. 调用Runtime.gc()方法 C. 将对象赋值null D. 无法强制垃圾回收器立即执行
答案:D
System.gc()只能提醒垃圾回收执行,不能强制
System.gc()是Runtime.gc()的简写
A. 短时间内创建大量对象 B. 调用一个没有退出条件的递归方法 C. 创建大量动态代理(生成大量Class并加载) D. 加载一个包含大量Class文件的Jar包
答案:C、D
A. 堆溢出 B. 栈溢出
方法区存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。
所以方法区是与类有关的。
A. sleep是线程类(Thread)的方法,wait是object类的方法。 B. sleep不释放对象锁,wait放弃对象锁。 C. sleep 暂停线程,但监控状态仍然保持,结束后会自动恢复。 D.wait后进入等待锁池,只有针对此对象发出notify方法后获得对象锁进入运行状态。
答案:D
D. wait后进入等待锁池,只有针对此对象发出notify方法后或的对象锁进入就绪状态。
A. 在启动线程 start() 前使用setDaemon(true) B. 在启动线程start()前使用join() C.在启动线程 start() 后使用setDaemon(true) D. 两个方法都要放在start()方法之前调用
答案:A
守护线程是Java线程的一种,JVM是在所有非守护线程退出后退出
Java的守护线程有垃圾回收器线程,终结器线程等。 join方法是将当前线程加入到T的wait队列,等到T执行完成后再唤醒当前线程
A. 并发和并行都用到了线程 B. 要实现多线程只可以通过继承Thread类 C.synchronized关键字是为了解决共享资源竞争的问题 D. 在Java中,每个对象可以获得多个同步锁
答案:C
并发:同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
并行:同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的
并行可以多个进程在多台机器上跑。
实现多线程有以下几种方式
继承Thread 类,重写run方法实现Runnable 接口,实现run方法,并以参数的形式传递给Thread类的构造器中。实现Callable接口…