在创建Thread对象之后,调用线程的()方法开始执行线程。
A.start()
B.interrupt()
C.run()
D.stop()
A.创建Callable接口的实现类,并实现call()方法,该call()方法将作为线程执行体,并且有返回值
B.创建Callable实现类的实例,使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值
C.使用FutureTask对象作为Thread对象的target创建并启动新线程
D.调用FutureTask对象的getValue()方法来获得子线程执行结束后的返回值
A.使用继承Thread类创建线程,可以直接调用线程的方法
B.通过实现Runnable接口创建线程,体现了面向对象的思想
C.Thread类从面向对象的角度看,是虚拟CPU的封装
D.通过实现Runnable接口创建线程,会影响Thread类的体系
在面向对象方法中,继承用于()。
A.利用己有类创建新类 B.在已有操作的基础上添加新方法 C.为已有属性添加新属性 D.为已有状态添加新状态
A.同步代码块中的锁对象可以是任意类型的对象
B.当多个线程共享的锁对象必须是唯一的
C.当线程执行同步代码块时,首先会检查锁对象的标志位
D.锁对象的创建代码不能放到run()方法中
A.public class MyRunnable extends Runnable { public void run(){} }
B.public class MyRunnable extends Object { public void run(){} }
C.public class MyRunnable implements Runnable {public void run(){}}
D.public class MyRunnable implements Runnable {void run(){}}
A.定义Thread类的子类,重写Thread类的run()方法,创建该子类的实例对象,调用对象的start()方法
B.定义一个实现Runnable接口的类并实现run()方法,创建该类实例对象,将其作为参数传递给Thread类的构造方法来创建Thread对象,调用Thread对象的start()方法
C.定义Thread类的子类,重写Thread类的run()方法,创建该子类的实例对象,调用对象的run()方法
D.定义一个实现Runnable接口的类并实现run()方法,创建该类对象,然后调用run()方法
A.一个线程一旦被创建,就立即开始运行
B.使用start()方法可以使一个线程成为可运行的,但是它不一定立即开始运行
C.当运行状态的线程因为调用了yield()方法而停止运行,它一定被放在可运行线程队列的前面
D.当因等待对象锁而被阻塞的线程获得锁后,将直接进入运行状态
B.newCachedThreadPool()创建一个可缓存的线程池,如果线程池的规模超过了处理需求,将自动回收空闲线程,而当需求增加时,则可以自动添加新线程,线程池的规模不存在任何限制
C.newSingleThreadExecutor()创建了一个固定长度的线程池,而且以延迟或定时的方式来执行任务,类似于Timer
D.newScheduledThreadPool(int corePoolSize)这是一个单线程的Executor,它创建单个工作线程来执行任务,如果这个线程异常结束,会创建一个新的来替代它;它的特点是能确保依照任务在队列中的顺序来串行执行