background image

示:join、wait/notify、Semphore、Lock 等) 
在做到了上面打印顺序控制后,怎么样才能做到如果线程 b 执行了 100 毫秒还没执行完
的话则直接继续线程 a 的执行呢?(提示:ExecutorServices、Future) 

 

片段二

 

也是个控制顺序的问题,假设有如下一段代码:
for(int i=0;i<10;i++){
Thread thread=new Thread(){
public void run(){
...
}
};
thread.setName("Thread-"+i);
thread.start();
}
System.out.println("All Executed");

需要做到所有线程同时运行,而不是按照 for 的顺序一个一个启动,并且要求 All 
Executed 需 要 在 所 有 线 程 都 执 行 完 毕 后 才 打 印 , 有 什 么 办 法 做 到 呢 ? ( 提 示 :
CountDownLatch 等) 

 

片段三
Map<String,Object> datas=new ConcurrentHashMap<String,Object>();
public Object get(String keyName){
Object data=null;
if(!datas.containsKey(keyName)){
data=createData(keyName);
datas.put(keyName,data);
}
else{
data=datas.get(keyName;)
}
return data;

 

上面这段代码在并发时会出什么问题呢,为什么?
如果有问题的话,应该怎么去解决呢?(提示:Synchronized、Lock、FutureTask 等) 

 

片段四

一个这样的线程池,当并发请求数为 15 时会是怎么个状况?(池的使用状况,例如活动
线程数、队列中的数等) 
当并发请求数为 100

 

的时候是什么状况?

当并发请求数为 200

 

的时候是什么状况?