xcxd.net
当前位置:首页 >> jAvA stAtiC 线程安全 >>

jAvA stAtiC 线程安全

都同时调用了,怎么还不是多线环境下呢?但是就算是同时调用,如果没有共享变量,有共享变量,但变量是final(引用类型除外)或者是线程安全类(Concurrent包下的,也可以)就不会存在并发问题.public class TestUtil() { private static int i = 0 public static int a (){ return i++;//会有并发问题 } public static int b() { int i = 0; return i++;//不会有并发问题 } } 方法是否存在并发问题,判断是否有竞态条件就好了

static修饰的变量属于类变量,在多线程代码中,有可能多个代码同时调用一个静态方法,而这个静态方法中如果对静态变量发生了写操作,在不使用锁的情况下,就不是线程安全的!确保线程安全的话,需要给代码段加锁,这样就安全了.

这要看静态方法中有没有操作静态成员变量了,看代码吧 public class StaticMethod implements Runnable { static int num=0; public static void addOne() throws InterruptedException { for (int i = 0; i <= 10; i++) { num += i; } System.out.println(Thread.

public class A { public void method01(){ //dosomething } public void method02(){ //dosomething } //public void method03(){ public static void method03(){ // 静态方法里才可以有今天变量 static Map map = new TreeMap(); static String x=“”; //

你问的是java api中的哪些类是安全的?还是线程安全的意思?关于线程安全,是指当多个线程访问同一个变量时,该变量不会因为多线程访问产生意想不到的问题,为了避免多线程访问的不可预知的问题,对于程序中多线程能访问到的变量要加锁,即加synchronized,放在同步块中,或者对改变该变量值的方法加synchronized限制.当然jdk中自带的一些类本身就实现了该机制,本身就是线程安全的,比如stringbuffer,vector等.多线程是程序中比较高级的一个方面,希望你能深入理解!

总的结论:java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能存在全局变量.如果存在全局变量,则需要使用同步机制.如下通过一组对比例子从头讲解: 在多线程中使用静态方法会发生什么

线程安全是指要控制多个线程对某个资源的有序访问或修改,而在这些线程之间没有产生冲突.在Java里,线程安全一般体现在两个方面: 1、多个thread对同一个java实例的访问(read和modify)不会相互干扰,它主要体现在关键字

就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问 什么叫线程安全:

①静态内部类是你第一调用的时候才实例化②而直接静态代码块,是加载就实例化了③相比之下节省了内存

没有问题,因为你的静态处理方法中处理的每一个xml文件会被开辟单独的内存空间.所以多个线程访问的不是同一个资源.

网站首页 | 网站地图
All rights reserved Powered by www.xcxd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com