java多线程问题

李荣强 2013-02-27 09:21:51
package cn.itcast.thread;

import java.util.HashMap;
import java.util.Map;

public class ThreadLocalTest {

/**
* @param args
*/
private static Map<Thread,Long> myThreadLoacl=new HashMap<Thread, Long>();
public static void main(String[] args) {
for(int i=0;i<2;i++){
new Thread(new Runnable(){

@Override
public void run() {
long data=System.currentTimeMillis();
System.out.println(Thread.currentThread().getName()+"has put data"+data);
new First().showData();
new Second().showData();
}}).start();
}

}
static class First{
public void showData(){
System.out.println(myThreadLoacl.isEmpty());
long data=myThreadLoacl.get(Thread.currentThread());//这里会发生空指针问题,但是上一行却打印的是true,怎么回事
System.out.println("first"+Thread.currentThread().getName()+" "+data);
}
}
static class Second{
public void showData(){
long data=myThreadLoacl.get(Thread.currentThread());
System.out.println("second"+Thread.currentThread().getName()+" "+data);
}
}

}
...全文
169 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
李荣强 2013-02-28
  • 打赏
  • 举报
回复
引用 1 楼 dracularking 的回复:
引用 楼主 li951418089 的回复:这里会发生空指针问题,但是上一行却打印的是true,怎么回事 这不就对了嘛,打印为true(empty),map为空,不过会发生空指针异常吗?
恩恩,想晕了,怎么解决空指针问题呢???
gguoling 2013-02-27
  • 打赏
  • 举报
回复
空的Long到long的转换异常,修改为Long data=myThreadLoacl.get(Thread.currentThread());就不会报错啦
dracularking 2013-02-27
  • 打赏
  • 举报
回复
引用 楼主 li951418089 的回复:
这里会发生空指针问题,但是上一行却打印的是true,怎么回事
这不就对了嘛,打印为true(empty),map为空,不过会发生空指针异常吗?

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧