假设在上述代码的基础上,将`ti.join();`替换为 `ti.join(1);`,并且假设线程调度是严格按照时间片进行,每个线程每次只能获得1毫秒的CPU执行时间片,那么下列哪种说法是准确的?

答案解析

本题考察带超时时间的`join(long millis)`方法。`join(long millis)`方法会使当前线程等待目标线程执行一段时间(毫秒数),若超过指定时间,或者目标线程执行完毕,则当前线程解除阻塞。 A选项错误,`join(1)` 并不会让主线程阻塞1毫秒后与t1线程竞争,而是阻塞直到t1执行完,或者超时。且线程的执行并非先来后到,而是竞争获取CPU时间片。 B选项错误,`join(1)`会阻塞主线程,且在线程调度不确定的情况下,并不能保证t1线程会被执行一部分。 C选项正确,`join(1)`表示主线程最多等待1毫秒或者t1线程执行完毕。如果1毫秒内t1线程没有执行完,主线程会解除阻塞继续执行。 D选项错误,`join(1)`方法会在超时1毫秒后继续执行主线程,不会继续等待t1线程执行完成。
正确答案:C
随机推荐
开始刷题