/**
*
* <pre>
* 子线程运行10次,主线程运行100次,子线程在运行10次,接着主线程在运行100次,依次循环50次
* 线程之间的通信与同步应该在一个业务类中处理
* </pre>
*
* @create 2014年10月22日 下午8:55:17
* @modify
* @since JDK1.6
*/
import java.util.concurrent.atomic.AtomicInteger;
public class TraditionalThreadCommunication {
/**
* @param args
*/
public static void main(String[] args) {
final Business business = new Business();
new Thread(
new Runnable() {
@Override
public void run() {
for(int i=1;i<=50;i++){
System.out.println("sub run i"+i);
business.sub(i);
}
}
}
).start();
for(int i=1;i<=50;i++){
System.out.println("i--------"+i);
business.main(i);
}
}
}
class Business {
private boolean bShouldSub = true;
public synchronized void sub(int i){
while(!bShouldSub){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=10;j++){
System.out.println("sub thread sequence of " + j + ",loop of " + i);
}
bShouldSub = false;
this.notify();
}
public synchronized void main(int i){
while(bShouldSub){
try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
for(int j=1;j<=100;j++){
System.out.println("main thread sequence of " + j + ",loop of " + i);
}
bShouldSub = true;
this.notify();
}
}
摘自 04_传智播客_张孝祥_传统线程同步通信技术
相关推荐
在Java多线程编程中,wait和notify是两个非常重要的方法,它们都是Object类的方法,用于线程之间的通信和同步。下面我们将详细解释wait和notify的用法。 wait方法 wait方法是Object类的一个方法,用于让当前线程...
在Java编程语言中,`wait()`和`notify()`是Object类中的两个关键方法,它们用于线程间的协作和通信。这两个方法在多线程环境下尤其重要,因为它们允许线程等待特定条件并通知其他线程继续执行。在分析给定的程序之前...
- `wait()`和`notify()`/`notifyAll()`:这两个方法位于`Object`类中,用于线程间的通信。生产者线程在生产完产品后调用`notify()`或`notifyAll()`唤醒消费者线程,消费者线程在消费完产品后调用`wait()`进入等待...
本教程将聚焦于利用事件对象进行线程间的通信,这是实现多线程同步的一种常见方法。 事件对象,通常称为信号量或事件标志,在Windows API中,它是一个内建的同步机制,允许线程等待特定事件的发生,或者通过设置...
在Java中,`wait()`, `notify()`, 和 `notifyAll()` 是Java Object类的三个方法,它们在实现线程间通信和协作时扮演着关键角色。这些方法主要用于解决线程等待和唤醒的问题,是基于Java Monitor(监视器)模型的。 ...
在Java中,`wait()` 和 `notify()` 方法是实现线程间通信和协作的重要工具,它们属于 `java.lang.Object` 类,这意味着所有类都默认继承了这两个方法。本文将详细探讨如何使用 `wait()` 和 `notify()` 来控制子线程...
3. **wait()、notify() 和 notifyAll()** 方法:这些方法是Object类中的,用于线程间通信。一个线程调用`wait()`会释放同步锁并进入等待状态,直到其他线程调用`notify()`或`notifyAll()`唤醒它。 4. **java.util....
synchronized关键字提供了基本的线程同步,而wait-notify机制和Lock接口则提供了更高级的线程通讯和控制手段。在实际开发中,根据具体需求选择合适的同步策略,可以提高程序的效率和正确性。通过学习和实践...
使用`wait()`的一个关键前提是在`synchronized`代码块中调用,以确保在释放锁的同时保持线程同步。 #### `notify()` `notify()`方法随机唤醒正在等待该对象锁的线程之一。被唤醒的线程将有机会重新获取锁并继续...
Java中的wait/notify/notifyAll可用来实现线程间通信,是Object类的方法,这三个方法都是native方法,是平台相关的,常用来实现生产者/消费者模式。 wait()方法将当前线程置于等待状态,直到其他线程调用notify()或...
- **wait()、notify()和notifyAll()**:这些方法用于线程间的通信,控制线程的执行顺序,确保资源的正确访问。 - **BlockingQueue**:作为一种高级的线程间通信工具,它可以实现生产者消费者模型,简化并发编程。 ...
4. **wait()、notify()和notifyAll()**:这些是Object类的方法,可以在同步块中使用,用于线程间的通信。`wait()`会让当前线程等待,`notify()`或`notifyAll()`会唤醒等待的线程。 5. **volatile关键字**:虽然不是...
在Java多线程编程中,wait和notify是两个非常重要的机制,用于实现线程之间的通信和同步。在本文中,我们将通过示例代码详细介绍Java多线程wait和notify的使用,帮助读者更好地理解和掌握这两个机制。 wait机制 在...
`wait()`、`notify()`和`notifyAll()`是Java中的三个关键字,它们属于Object类的方法,主要用于线程间的通信,尤其在实现生产者消费者模式时发挥着重要作用。本文将深入探讨这些方法以及如何在实际场景中应用它们。 ...
- **对象等待与通知**:`Object.wait()`, `Object.notify()`, `Object.notifyAll()`用于线程间的同步和通信。`wait()`会让当前线程等待,直到其他线程调用`notify()`或`notifyAll()`。这些方法需在同步代码块中使用...
Java提供了多种同步工具,如synchronized关键字、wait()和notify()方法、Lock接口(包括ReentrantLock可重入锁)以及Semaphore信号量等。这些工具能够确保共享资源在多线程访问时的安全性,防止数据竞争和死锁的发生...
本文旨在解析一个具体的Java多线程示例代码,以帮助读者更好地理解`wait()`与`notify()`方法的作用及其实现机制。这两个方法是Java中实现线程间通信的重要手段之一,尤其在解决生产者消费者模型、读者写者问题等经典...
Java提供了多种机制来实现线程间的通信,包括使用wait(), notify()和notifyAll()方法,以及使用synchronized关键字控制并发访问共享资源。这些方法都定义在java.lang.Thread类中。 1. **wait(), notify()和...
- 这些方法位于 `java.lang.Object` 类中,用于实现线程间的同步和通信。 - 当线程调用一个对象的 `wait()` 方法时,它会释放对象的锁,进入等待状态,直到其他线程调用同一对象的 `notify()` 或 `notifyAll()`。 ...
此外,wait()和notify()方法的使用还可以实现线程之间的通信和协作,例如,在银行系统中,多个线程可以使用wait()方法等待某个资源的释放,而notify()方法可以通知其他线程该资源已经释放。 多线程通信和等待机制是...