关于线程的创建过程,下面四种说法正确的有哪些?(多选)
A. 定义Thread类的子类,重写Thread类的run()方法,创建该子类的实例对象,调用对象的start()方法
B. 定义Thread类的子类,重写Thread类的run()方法,创建该子类的实例对象,调用对象的run()方法
C. 定义一个实现Runnable接口的类并实现run()方法,创建该类实例对,将其作为参数传递给Thread类的构造方法来创建Thread对象,调用Thread对象的start()方法
D. 定义一个实现Runnable接口的类并实现run()方法,创建该类对象,然后调用run()方法
下面四个选项中,哪些是线程进入阻塞或者等待状态的原因?(多选)
A. 线程试图获取某个对象的同步锁,而该锁被其它线程持有
B. 线程调用了另一个线程的join()方法
C. 当线程调用了一个阻塞式的IO方法
D. 线程调用了setDaemon(boolean b)方法