`
三里小龙
  • 浏览: 87617 次
  • 性别: Icon_minigender_1
  • 来自: 孝感
社区版块
存档分类
最新评论

多线程修改单一变量值

    博客分类:
  • Java
阅读更多

 

package org.fanzone.thread;

 

/** 

 * Title: base<br> 

 * Description: Thread Handler<br> 

 * Copyright: Copyright (c) 2011 <br> 

 * Create DateTime: Jun 14, 2011 3:06:51 PM <br> 

 * @author wangmeng

 */

public class ThreadHandle {

 

/**global variable*/

private int count;

public static void main(String[] args){

ThreadHandle th = new ThreadHandle();

/**the initials of the two inner classes*/

ThreadOne to = th.new ThreadOne();

ThreadTwo tt = th.new ThreadTwo();

Thread t = new Thread(to);

t.start();

t.setName("p");

t = new Thread(tt);

t.start();

t.setName("m");

}

/**

* synchronized method to superimposite 

*/

private synchronized void plus(){

count++;

System.out.println(Thread.currentThread().getName()+" -- "+count);

}

/**

* synchronized method to descend

*/

private synchronized void minus(){

count--;

System.out.println(Thread.currentThread().getName()+" -- "+count);

}

/**

* Title: base<br> 

* Description: A inner class which deal with the plus handler<br> 

* Copyright: Copyright (c) 2011 <br> 

* Create DateTime: Jun 14, 2011 3:09:40 PM <br> 

* @author wangmeng

*/ 

class ThreadOne implements Runnable{

public void run(){

for(int i=0;i<100;i++){

plus();

}

}

}

/**

* Title: base<br> 

* Description: A inner class which deal with the minus handler<br> 

* Copyright: Copyright (c) 2011 <br> 

* Create DateTime: Jun 14, 2011 3:09:40 PM <br> 

* @author wangmeng

*/ 

class ThreadTwo implements Runnable{

public void run(){

for(int i=0;i<100;i++){

minus();

}

}

}

}


0
0
分享到:
评论

相关推荐

    java多线程并发

    即当一个线程修改了带有`volatile`修饰符的变量后,其他线程能立即看到最新的值。 - **锁**:除了内置的`synchronized`关键字之外,Java还提供了一些高级锁机制,如`ReentrantLock`等,这些锁具有更高的灵活性和更细...

    多线程面试59题.pdf

    - **可见性**:当一个线程修改了volatile变量的值,其他线程能够立即看到更新后的值。 - **禁止指令重排序**:编译器和处理器通常会对代码进行优化,可能会重新排序某些指令。volatile可以防止这种优化行为,确保...

    实验七:Linux多线程编程(实验报告).docx

    多线程编程的核心优势在于它能够在单一进程中并行执行多个任务,这些任务被称为线程。每个线程都有自己的程序计数器、寄存器集和栈空间,但它们共享相同的地址空间,包括全局变量和堆数据。这种共享内存模型简化了...

    深入研究Servlet线程安全性问题.pdf

    在多线程环境中,如果多个线程同时修改相同的实例变量,则可能导致数据不一致性问题。例如,在上面给出的`ConcurrentTest` Servlet示例中,`PrintWriter output` 是一个实例变量,它在`service`方法中被赋值。当只有...

    java多线程中线程封闭详解

    Java多线程中,线程封闭是一种重要的并发控制策略,其核心思想是限制共享数据的访问,从而避免因多线程并发导致的数据不一致问题。本文将深入探讨线程封闭的概念、实现方式及其应用场景。 线程封闭的概念在于,确保...

    ThreadLocal

    在不同线程中访问同一个ThreadLocal实例时,它们看到的是各自线程内的副本,而不是全局共享的单一变量。 - 值的存储是基于线程绑定的,而不是存储在传统的堆或栈中。这意味着即使两个线程同时访问同一个ThreadLocal...

    拼多多Java高级工程师岗位面试真题

    2. **可见性**:可见性确保当一个线程修改了共享变量的值,其他线程能立即看到这个修改。synchronized和Lock(如ReentrantLock)可以提供可见性保证,因为它们强制线程在解锁前更新主内存的值,其他线程在获取锁后能...

    java并发编程实践笔记

    16. **单一不可变对象的优势:** 不可变对象在多线程环境中是线程安全的,应尽可能使用不可变对象,并确保所有成员变量都是不可变的。 17. **安全发布共享变量:** 确保共享变量在被多个线程访问之前已经被安全地...

    java并发编程实践笔记资料.pdf

    5. 不要将共享变量裸露在多线程环境下,应该使用同步或不可变性保护。 6. 在多线程环境下,延迟加载需要同步的保护,以避免对象重复实例化。 7. 对于volatile声明的数值类型变量进行运算,往往是不安全的,因为...

    Dll机制的测试

    在DLL中定义的全局变量可以通过导出函数来访问,这样其他模块就可以通过这些导出函数来读取或修改这些变量的值。但需要注意的是,由于多线程环境,如果多个线程同时访问同一个全局变量,可能会引发数据竞争问题,...

    2018年蚂蚁课堂(每特教育)-Java工程师面试宝典-V1.0

    - 可见性:当一个线程修改了共享变量的值,其他线程能够立即看到这个变化。 - 有序性:程序执行的顺序按照代码的先后顺序执行,但在多线程环境中,指令重排序可能会导致结果与预期不符。使用`volatile`关键字或`...

    CAS底层原理与ABA问题.docx

    尤其是在高并发场景下,如果某个值频繁被其他线程修改,可能导致CPU被大量消耗在CAS循环中。 2. **单一共享变量的限制**:CAS只能保证单个共享变量的原子操作。如果需要对多个共享变量进行原子操作,就需要使用锁...

    synchronized ReentrantLock volatile Atomic 原理分析.docx

    它确保了当一个线程修改了volatile变量的值时,其他线程可以立即看到这个新值,解决了Java内存模型导致的可见性问题。volatile的实现依赖于内存屏障,它确保在屏障前的写操作都会被写入内存,屏障后的读操作都能读取...

    2020年拼多多-Java高级.pdf

    - **防止阻塞**:即使在单核CPU上,多线程也能避免单一任务阻塞导致整个程序停滞。 - **便于建模**:将大任务拆分成多个小任务,通过多线程分别处理,简化程序设计。 4. **创建线程的方式**: - **继承Thread类*...

    Threading in C# 中文版

    在多线程环境中,局部变量是线程私有的。这意味着即使在不同线程中使用相同名称的局部变量,也不会导致数据冲突。 #### 高级话题 - **非阻塞同步**: 使用无锁算法来减少线程间的阻塞。 - **Wait和Pulse**: 这些方法...

    mohem.zip_zip

    描述中的 "SEMAPHORE AND MANITOR" 提到了两个并发控制机制,这通常是在讨论多线程编程或操作系统时会遇到的概念。在IT领域,了解如何在多线程环境下有效地管理和同步资源是至关重要的。 **ZIP 文件格式** ZIP 是一...

    Java Volatile 变量详解及使用方法

    当一个线程修改了`volatile`变量的值,其他线程在读取这个变量时会获取到最新的值,而不是缓存中的旧值。这是通过Java内存模型(JMM)中的主内存与工作内存之间的交互来实现的,`volatile`变量的读写操作会强制刷新...

Global site tag (gtag.js) - Google Analytics