java同步 静态变量的变化
public class abc implements Runnable{
//共享资源变量
static int count = 0;
@Override
public synchronized void run() {
for (int i = 0; i < 2; i++) {
count=count+1;
System.out.println(Thread.currentThread().getName()+":"+count);
}
}
public static void main(String[] args) throws InterruptedException {
abc syncTest1 = new abc();
abc syncTest2 = new abc();
Thread thread1 = new Thread(syncTest1,"thread1");
Thread thread2 = new Thread(syncTest2, "thread2");
thread1.start();
thread2.start();
}
}
某次结果:
thread1:1
thread2:2
thread2:4
thread1:3
无法理解最后两行
//共享资源变量
static int count = 0;
@Override
public synchronized void run() {
for (int i = 0; i < 2; i++) {
count=count+1;
System.out.println(Thread.currentThread().getName()+":"+count);
}
}
public static void main(String[] args) throws InterruptedException {
abc syncTest1 = new abc();
abc syncTest2 = new abc();
Thread thread1 = new Thread(syncTest1,"thread1");
Thread thread2 = new Thread(syncTest2, "thread2");
thread1.start();
thread2.start();
}
}
某次结果:
thread1:1
thread2:2
thread2:4
thread1:3
无法理解最后两行
...全文
相关推荐
JAVAStatic静态变量.doc
此外,静态变量在多线程环境中需要注意同步问题,因为它们是所有线程共享的。如果不加以控制,可能会导致数据不一致或竞态条件。
java多线程编程之为什么要进行数据同步
在多线程环境中,类变量(静态变量)可以被多个线程共享,如果没有进行有效的数据同步,就可能导致线程安全问题,出现所谓的“脏数据”。首先,我们要理解为什么需要数据同步。
java测试程序
在测试程序中,可能会通过设置和读取静态变量来检查其值的变化和共享行为,确保在多线程环境下的正确同步。
JAVA100例之实例65 JAVA线程同步
这是Java中最基础的线程同步手段。2. **volatile 关键字**:它保证了变量的可见性,即当一个线程修改了volatile变量的值时,其他线程可以立即看到这个变化。
java中static属性学习
因此,在并发场景中,必须采取适当的同步措施来确保线程安全。总结来说,`static`属性在Java中提供了强大的功能,允许程序员创建共享的类成员,但同时也带来了潜在的风险,如内存泄漏和线程安全问题。


Java SE
