线程中对map.put,非线程调用为null问题

yulin6 2017-10-16 10:09:59
package com.hywy.bdpagapt.socketServer;

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

import javax.servlet.http.HttpServlet;

public class Test1 extends HttpServlet implements Runnable{

public static Map<String,Object> map = new HashMap<String,Object>();

public void init(){
new Thread(new Test1()).start();
}

public void run(){
map.put("1", 123);
}

public static void setMap(String key, Object value){
map.put(key, value);
}

public static Object getMap(String key){
return map.get(key);
}

}

package com.hywy.bdpagapt.socketServer;

public class Test2 {
public static void main(String[] args) {
Object str = Test1.getMap("1");
System.out.println(str);
}
}

输出结果为null
...全文
431 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
叮咚呛咚呛 2017-10-18
  • 打赏
  • 举报
回复
遇到不懂的问题可以先用debug模式调试一下 看看进不进方法看看值是否为空~
yulin6 2017-10-16
  • 打赏
  • 举报
回复
JVM是一个虚拟机 虚拟机中有自己的虚拟进程 Tomcat是一个进程 main方法又是一个进程 web项目一定是基于一个事件触发get或post方法才行 这样的测试才能成功

51,409

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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