本帖最后由 杨杨 于 2013-3-22 09:06 编辑
- package cn.ithema.test;
- import java.util.Random;
- public class ThreadScopeShareData {
- /**
- * @param args
- */
- private static int data =0;
- public static void main(String[] args) {
- for(int i=0;i<2;i++){
- new Thread(new Runnable(){
- @Override
- public void run() {
- data = new Random().nextInt();
- System.out.println(Thread.currentThread().getName()
- + " has put data :" + data);
- new A().get();
- new B().get();
- }
- }).start();
- }
- }
- static class A{
- public static void get(){
- System.out.println("A from"+Thread.currentThread().getName()
- +"get data " +data);
- }
- }
- static class B{
- public static void get(){
- System.out.println("B from"+Thread.currentThread().getName()
- +"get data " +data);
- }
- }
- }
复制代码 输出
Thread-0 has put data :-1931552408
A fromThread-0get data -1931552408
B fromThread-0get data -1931552408
Thread-1 has put data :214244390
A fromThread-1get data 214244390
B fromThread-1get data 214244390
这样就符合了 没个线程独享自己的 数据,就没有线程安全问题了
但是张老师写这段代码的时候出现线程 直接数据有问题
求出问题的代码。
或者有因为多线程 共享数据出现问题的代码也行啊求问题代码 |