zoukankan      html  css  js  c++  java
  • java 多线程访问同一个对象数据保护的问题

     java 多线程同时访问统一个数据的时候,会引起一些错误,后面的线程会修改数据,而前面的线程还在使用修改前的内容,

    使用 synchronized 关键字,保证代码块只能有一个线程来访问

    public class myThreadtest {

      public static void main(String[] args) {
        //只有t1一分的时候,出现数据共享的问题
        myThread t1= new myThread(0); 

              //两个线程访问同一个对象
        new Thread(t1,"first").start();
        new Thread(t1,"second").start();
      }

    }

    public class myThread implements Runnable {
          int i;
          public myThread(int i){
            this.i = i;
          }
          Object obj = new Object(); //同步的标记对象
          @Override
          public void run() {
            synchronized (obj) { //不会有两个线程同时访问代码块
            // TODO Auto-generated method stub
            for(i = 0;i<5;i++){
            try {
              Thread.sleep(1000);
            } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
          //System.out.println(Thread.currentThread().getName()+i);
          System.out.println(Thread.currentThread().getName()+i);

        }
      }

      }
    }

  • 相关阅读:
    【C语言】C语言static和extern区别
    【C语言】C语言外部变量和内部变量
    【C语言】C语言局部变量和全局变量
    【C语言】C语言常量和变量
    【C语言】C语言数据类型
    【C语言】C语言标识符
    【C语言】C语言关键字
    【C语言】外部函数和内部函数
    【C语言】C语言函数
    Android 测试 Appium、Robotium、monkey等框架或者工具对比
  • 原文地址:https://www.cnblogs.com/lilefordream/p/3615732.html
Copyright © 2011-2022 走看看