对于通过实现Runnable接口创建线程,下面说法正确的是( )。(多选)
A. 适合多个相同程序代码的线程去处理同一个资源的情况
B. 把线程同程序代码、数据有效地分离,很好地体现了面向对象的设计思想
C. 可以避免由于Java的单继承带来的局限性
D. 编写简单,可以不通过Thread类直接创建线程
查看答案
对于线程的生命周期,下面4 种说法正确的是( )。(多选)
A. 调用了线程的start( )方法,该线程就进入可运行状态(就绪,还要获得CPU使用权)
B. 线程的run( )方法运行结束或被未catch的InterruptedException等异常终结,那么该线程进入死亡状态
C. 线程进入死亡状态,但是该线程对象仍然是一个Thread对象,在没有被垃圾回收器回收之前仍可以像引用其他对象一样引用它
D. 线程进入死亡状态后,调用它的start( )方法仍然可以重新启动
对于死锁的描述,下面4 种说法正确的是( )。(多选)
A. 当两个线程互相等待对方释放同步锁时会发生死锁
B. Java虚拟机没有检测和处理死锁的措施
C. 一旦出现死锁,程序会发生异常
D. 处于死锁状态的线程处于阻塞状态,无法继续运行
下面4 个选项中,( )是线程进入阻塞状态的原因。(多选)
A. 线程试图获取某个对象的同步锁,而该锁被其他线程持有
B. 线程调用了另一个线程的join( )方法
C. 当线程调用了一个阻塞式的IO方法
D. 线程调用了 setDaemon(boolean b)方法
下面4 个选项中,对线程同步的目的描述正确的有( )。(多选)
A. 锁定资源,使同一时刻只有一个线程去访问它,防止多个线程操作同一个资源引发错误
B. 提高线程的执行效率
C. 让线程独占一个资源
D. 让多个线程同时使用一个资源