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();
}
}
}
}
分享到:
相关推荐
即当一个线程修改了带有`volatile`修饰符的变量后,其他线程能立即看到最新的值。 - **锁**:除了内置的`synchronized`关键字之外,Java还提供了一些高级锁机制,如`ReentrantLock`等,这些锁具有更高的灵活性和更细...
- **可见性**:当一个线程修改了volatile变量的值,其他线程能够立即看到更新后的值。 - **禁止指令重排序**:编译器和处理器通常会对代码进行优化,可能会重新排序某些指令。volatile可以防止这种优化行为,确保...
多线程编程的核心优势在于它能够在单一进程中并行执行多个任务,这些任务被称为线程。每个线程都有自己的程序计数器、寄存器集和栈空间,但它们共享相同的地址空间,包括全局变量和堆数据。这种共享内存模型简化了...
在多线程环境中,如果多个线程同时修改相同的实例变量,则可能导致数据不一致性问题。例如,在上面给出的`ConcurrentTest` Servlet示例中,`PrintWriter output` 是一个实例变量,它在`service`方法中被赋值。当只有...
Java多线程中,线程封闭是一种重要的并发控制策略,其核心思想是限制共享数据的访问,从而避免因多线程并发导致的数据不一致问题。本文将深入探讨线程封闭的概念、实现方式及其应用场景。 线程封闭的概念在于,确保...
在不同线程中访问同一个ThreadLocal实例时,它们看到的是各自线程内的副本,而不是全局共享的单一变量。 - 值的存储是基于线程绑定的,而不是存储在传统的堆或栈中。这意味着即使两个线程同时访问同一个ThreadLocal...
2. **可见性**:可见性确保当一个线程修改了共享变量的值,其他线程能立即看到这个修改。synchronized和Lock(如ReentrantLock)可以提供可见性保证,因为它们强制线程在解锁前更新主内存的值,其他线程在获取锁后能...
16. **单一不可变对象的优势:** 不可变对象在多线程环境中是线程安全的,应尽可能使用不可变对象,并确保所有成员变量都是不可变的。 17. **安全发布共享变量:** 确保共享变量在被多个线程访问之前已经被安全地...
5. 不要将共享变量裸露在多线程环境下,应该使用同步或不可变性保护。 6. 在多线程环境下,延迟加载需要同步的保护,以避免对象重复实例化。 7. 对于volatile声明的数值类型变量进行运算,往往是不安全的,因为...
在DLL中定义的全局变量可以通过导出函数来访问,这样其他模块就可以通过这些导出函数来读取或修改这些变量的值。但需要注意的是,由于多线程环境,如果多个线程同时访问同一个全局变量,可能会引发数据竞争问题,...
- 可见性:当一个线程修改了共享变量的值,其他线程能够立即看到这个变化。 - 有序性:程序执行的顺序按照代码的先后顺序执行,但在多线程环境中,指令重排序可能会导致结果与预期不符。使用`volatile`关键字或`...
尤其是在高并发场景下,如果某个值频繁被其他线程修改,可能导致CPU被大量消耗在CAS循环中。 2. **单一共享变量的限制**:CAS只能保证单个共享变量的原子操作。如果需要对多个共享变量进行原子操作,就需要使用锁...
它确保了当一个线程修改了volatile变量的值时,其他线程可以立即看到这个新值,解决了Java内存模型导致的可见性问题。volatile的实现依赖于内存屏障,它确保在屏障前的写操作都会被写入内存,屏障后的读操作都能读取...
- **防止阻塞**:即使在单核CPU上,多线程也能避免单一任务阻塞导致整个程序停滞。 - **便于建模**:将大任务拆分成多个小任务,通过多线程分别处理,简化程序设计。 4. **创建线程的方式**: - **继承Thread类*...
在多线程环境中,局部变量是线程私有的。这意味着即使在不同线程中使用相同名称的局部变量,也不会导致数据冲突。 #### 高级话题 - **非阻塞同步**: 使用无锁算法来减少线程间的阻塞。 - **Wait和Pulse**: 这些方法...
描述中的 "SEMAPHORE AND MANITOR" 提到了两个并发控制机制,这通常是在讨论多线程编程或操作系统时会遇到的概念。在IT领域,了解如何在多线程环境下有效地管理和同步资源是至关重要的。 **ZIP 文件格式** ZIP 是一...
当一个线程修改了`volatile`变量的值,其他线程在读取这个变量时会获取到最新的值,而不是缓存中的旧值。这是通过Java内存模型(JMM)中的主内存与工作内存之间的交互来实现的,`volatile`变量的读写操作会强制刷新...