A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 雷丹 中级黑马   /  2013-10-24 22:06  /  1027 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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);
}
}

}

评分

参与人数 1技术分 +1 收起 理由
杨增坤 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 黄小贝 于 2013-10-24 22:46 编辑

public void showData() {
                        
                        System.out.println(myThreadLoacl.isEmpty());
                        System.out.println(myThreadLoacl.get(Thread.currentThread()));//这个值是 null
                        long data = myThreadLoacl.get(Thread.currentThread());// 你这里等于写了 long data = null
                        System.out.println("first" + Thread.currentThread().getName()
                                        + "    " + data);
                }


好坑,论坛发图没有以前清晰了!!!换个浏览器还是这样。。。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1 赞一个!

查看全部评分

回复 使用道具 举报
楼主你好,如果问题已解决请将帖子状态修改为提问结束,

如果未解决请继续提问,谢谢合作

修改方法请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马