public class ThreadSopeShareData {
private static Map<Thread,Integer> map = new HashMap<Thread,Integer>();
private static int data = 0;
public static void main(String... args) {
for(int x=1;x<=2;x++){
new Thread(new Runnable(){
@Override
public void run() {
int data =new Random().nextInt();
map.put(Thread.currentThread(),data);
System.out.println(Thread.currentThread().getName()+"...."+data);
new A().get();
new B().get();
}
}).start();
}
}
static class A{
public void get(){
int data = map.get(Thread.currentThread());
System.out.println("A form "+Thread.currentThread().getName()
+"...get data :"+data);
}
}
static class B{
public void get(){
int data = map.get(Thread.currentThread());
System.out.println("B form "+Thread.currentThread().getName()
+"...get data :"+data);
}
}
}
里面用的HashMap是线程不安全的,导致试验中会出现丢失数据的情况,严重会报空指针异常,强烈建议改为HashTable或者对其采取同步措施。
fantacyleo 发表于 2014-9-12 00:38
这谁的视频啊?张老师的?我看了一下,似乎这里没有你说的线程安全问题,也不涉及空指针异常。你可以把出问 ...
fantacyleo 发表于 2014-9-12 00:38
这谁的视频啊?张老师的?我看了一下,似乎这里没有你说的线程安全问题,也不涉及空指针异常。你可以把出问 ...
不想飞不到 发表于 2014-9-12 16:03
空指针异常:
Thread-1++get data:-1322370346
Thread-0++get data:-2101630013
fantacyleo 发表于 2014-9-12 17:06
好吧。我仔细看一下。不过张老师的线程库视频确实问题不少。空中网3个面试题中有2个都有点问题 ...
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) | 黑马程序员IT技术论坛 X3.2 |