你的位置:首页 > 软件开发 > Java > java 线程安全 synchronized

java 线程安全 synchronized

发布时间:2016-09-11 20:00:08
一、线程安全问题:并发编程的原则:设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题,如果并发程序连最基本的执行结果准确性都无法保证,那并发编程就没有任何意义。为什么会出现数据不正确:  如果一个资源(变量,对象,文件,数据库)可以同时被很多 ...

一、线程安全问题:

并发编程的原则:设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题,如果并发程序连最基本的执行结果准确性都无法保证,那并发编程就没有任何意义。

为什么会出现数据不正确:

  如果一个资源(变量,对象,文件,数据库)可以同时被很多线程使用就会出现数据不一致问题,也就是我们说的线程安全问题。这样的资源被称为共享资源或临界区。

  举个例子:

    一个共享变量m,现在有两个线程同时对它进行累加操作,各执行10000次,那么我么期待的结果是20000,但实际上并不是这样的。看代码:

package com.jalja.base.threadTest;public class SynchronizedTest implements Runnable{  private static volatile int m=0;  public static void main(String[] args) {    Runnable run=new SynchronizedTest();    Thread thread1=new Thread(run);    Thread thread2=new Thread(run);    thread1.start();    thread2.start();    try {      //join() 使main线程等待这连个线程执行结束后继续执行下面的代码      thread1.join();      thread2.join();    } catch (InterruptedException e) {      e.printStackTrace();    }    System.out.println("m的最终结果:"+m);  }  public void run() {    for(int i=0;i<10000;i++){      m++;    }  }}

原标题:java 线程安全 synchronized

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。