雨课堂知识点总结(十八)

10-1 Concurrency
第一题
以下是计算机系统中的concurrency现象?
A手机上的一个App通过5G网络访问云端数据
B四核CPU,执行多道程序
C使用Observer设计模式的Java程序,其中Subject类和Observer类的执行
D一亿人同时登录12306网站抢购春运火车票
E使用JVM参数-XX: +UseConcMarkSweepGC启动的程序,运行时进行GC
F同一个Java程序内的两个线程,共享一个mutable的
答案:ABDEF

第二题
关于process和thread的说法,不正确的是
A多个process之间不共享内存,而多个thread之间可共享内存
BCPU的某个核,在特定时间点只能运行单一process, 但可并行执行多个thread
C手机上的App通过5G网络访问云服务器的资源,手机上和服务器上运行的是不同的thread而非不同的process
D一个process可以包含多个thread,一个thread只能在一个process里运行
答案:BC

第三题
关于如何创建thread的说法,不正确的是
A从Thread类派生子类A,创建线程时(new A()).start()
B类A实现Runnable接口,并实现其run()方法,创建线程时(new Thread(new A())).run()
C
new Thread(new Runnable(){
public void run() {...};}) .start();
D
new Thread(new Runnable(){
public void run() {...};}).run();
答案:BD

第四题
关于time slicing, interleaving和race condition的说法,正确的是
ATime slicing由OS决定,但程序员可在代码中进行若干有限度的控制
B如果某程序执行结果的正确与否依赖于time slicing,那么意味着程序执行中产生了racecondition
C程序interleaving执行的基本单元是Java代码行
D同一个并发程序的多次执行中的time slicing可能完全不同,因此bug很难复现,将此类bug形象的称为Bohrbugs
答案:AB

第五题
关于Java Thread的sleep( )和interrput(),不正确的是__
A若线程的run( )代码中包含Thread.sleep(100),意味着该线程停止执行100ms, CPU交给其他线程/进程使用
B线程t1中包含代码t1. interrupt(),意味着执行完该语句后t1被终止,不会再获得time slicing
C线程t1在sleep( )期间可捕获到其他线程发来的中断信号并抛出InterruptedException异常
D线程若捕获了抛出InterruptedException异常,则自动终止执行
答案:BD

第六题
Thread t = new Thread(new Runnable(){
public void run(){
try{
print("a");
.*.
Thread. sleep( 200);
}catch(InterruptedException e){
print("b");
print("c");};});
t.start();
t. interrupt();
某类的main( )代码如上所示,执行后可能的输出结果为
ac
abc

第七题

如果希望让线程执行结束之后再执行其他线程,即让其他线程暂停,需要调用t.join();
用于“检测当前线程是否收到其他线程发来的中断信号”的Thread静态方法是Thread. isinterrupted()
在线程类的run( )方法中有以下代码,如果希望收到中断信号后终止线程执行,则TODO位置的语句应该是return
try{
Thread. sleep(1000);
} catch(InterruptedException e){
TODO;}

猜你喜欢

转载自www.cnblogs.com/HIT-ryp/p/10905646.html