- 浏览: 126952 次
- 性别:
- 来自: Singapore
文章分类
- 全部博客 (112)
- Tiger Thread (18)
- Perforce (6)
- Spring (5)
- maven (3)
- log4j (3)
- Quartz Scheduler (4)
- unix and linux (12)
- hibernate (3)
- Enum (1)
- Futures and Options (1)
- Market Making (2)
- Java Basic (11)
- Tibco EMS (3)
- F I X message (5)
- equity derivative (2)
- Sybase (3)
- XML (1)
- JUnit (2)
- J A X B 2.0 (1)
- N I O (1)
- windows batch file (1)
- Cruise Control (1)
- util Class (5)
- ant (1)
- JMS (1)
- profiling (0)
- Sql Server (6)
- GXT (2)
- eclipse (1)
- Generics (1)
- Tibco RV (3)
- Autosys (0)
- Message (1)
最新评论
-
houzhe11:
<property name="proxyTa ...
AOP usage -- BeanNameAutoProxyCreator usage
1) wait(), notify() 方法被调用的时候,只要外面没有被synchronized()罩住,编译可过,但是跑起来一定发生异常--- current thread not owner
2) wait(), notify()的ref1一定要和synchronized(ref2)一致!两个ref必须是同一个东西,否则报错。
3) 处于wait()状态的Thread t1, 如果被别人调用了t1.interrupt(),立刻从wait()状态抛出interrupted异常,由此看来,线程通讯的另一种方法---wait(), interrupt()组合。当等待时间不确定的时候,只需要让某线程wait()在一个本地obj上(保证永远不会被别人notify()起来),然后让外部线程通过interrupt()来唤醒。
public class ThreadTest
{
/**
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException
{
ThreadWait t5 = new ThreadWait();
t5.start();
// Doing alot of staff, here, maybe takes around 100ms, have no idea how long it will take.
Thread.sleep(1000);
t5.interrupt();
}
}
class ThreadWait extends Thread
{
public void run()
{
Object obj = new Object();
synchronized (obj)
{
for (int i = 1; i <= 3; i++)
{
System.out.println("ThreadSleep : " + i + ". " + this.getName());
}
try
{
obj.wait();//永远没有机会被notify(),只有等待被interrupt,被interrupt之后,才会继续执行,
//因为我也不知道我要等待多长时间
}
catch (InterruptedException ignore){}
for (int i = 4; i <= 6; i++)
{
System.out.println("ThreadSleep : " + i + ". " + this.getName());
}
}
}
}
发表评论
-
javadoc for Cyclic Barrier
2009-04-24 12:48 904java.util.concurrent.CyclicBarr ... -
Delayed interface and Delay Queue
2009-04-22 17:42 1054/** * A standard implementati ... -
Count Down Latch example code
2009-04-22 10:38 1155Key point : 1) 1 task is co ... -
3 ways to break dead lock
2009-04-21 17:30 7621) supply special resources. ... -
Blocking Queue Usage
2009-04-20 11:21 8333 implementations: LinkedBlocki ... -
The usage of Lock and Condition
2009-04-18 12:31 1069//: concurrency/waxomatic2/WaxO ... -
Re entrantLock usage
2009-04-15 17:15 1320a thread can be really interru ... -
new interrupt in java5
2009-04-15 12:08 658In Java 5, Thread.interrupt() i ... -
interrupt
2009-04-15 10:57 8171) Each thread has a boolean in ... -
Executor Service Usage
2009-04-14 18:18 894ExecutorService exec = Executor ... -
Thread Local usage
2009-04-14 17:46 817ThreadLocal usage – from Javado ... -
Timer TimerTask usage
2009-04-14 12:03 724Timer typical usage new Tim ... -
Java Thread programming basical knowledge
2009-02-26 22:40 1089yield() : Give a hint to the th ... -
Count Down Latch explanation
2008-10-02 10:29 957Very important paragraph on how ... -
Scheduled Executor Service
2008-07-22 11:27 1107Executor can return Executor, E ... -
Executor usage
2008-07-22 11:04 903Executor is used to arrange thr ... -
Callable Usage
2008-07-22 10:24 933The important thing need to loo ...
相关推荐
总结来说,Java的 `wait()` 和 `notify()` 提供了一种在多线程环境中控制线程执行的机制。通过合理使用这些方法,我们可以实现线程间的协作,精确控制子线程的运行状态。然而,这种方式虽然灵活,但管理起来相对复杂...
源码—Java多线程5—死锁和wait notify notifyAll
Java除了提供传统的 `wait` 和 `notify` 方法外,还提供了更高级的线程同步机制,例如 `Lock` 接口及其实现类 `ReentrantLock`。 ##### 1. Lock接口 `Lock` 接口提供了比使用 `synchronized` 更加灵活的锁定操作。...
在Java多线程编程中,wait和notify是两个非常重要的方法,它们都是Object类的方法,用于线程之间的通信和同步。下面我们将详细解释wait和notify的用法。 wait方法 wait方法是Object类的一个方法,用于让当前线程...
其中,wait()和notify()方法是Java语言中实现多线程通信和等待机制的两个核心方法。 wait()方法是Object类的一个方法,用来将当前线程置入“预执行队列”中,并且在wait()所在的代码行处停止执行,直到接到通知或被...
本文将深入探讨`wait`、`notify`以及`notifyAll`这三个关键字的使用及其背后的原理,帮助你理解如何在实际编程中有效地利用它们来解决线程同步问题。 首先,我们需要了解Java中的对象锁。每个Java对象都有一个内置...
`wait()`、`notify()`和`notifyAll()`是Java中的三个关键字,它们属于Object类的方法,主要用于线程间的通信,尤其在实现生产者消费者模式时发挥着重要作用。本文将深入探讨这些方法以及如何在实际场景中应用它们。 ...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
Java中的同步机制是多线程编程中至关重要的概念,它用于控制多个线程对共享资源的访问,防止数据不一致性和竞态条件的发生。在Java中,`wait()`, `notify()`, 和 `notifyAll()` 是Java Object类的三个方法,它们在...
_java多线程wait、notify机制详解_ 在Java多线程编程中,wait和notify是两个非常重要的机制,用于实现线程之间的通信和同步。在本文中,我们将通过示例代码详细介绍Java多线程wait和notify的使用,帮助读者更好地...
标题和描述概述的知识点主要集中在Java的多线程机制中,特别是`wait`和`notify`方法在同步锁中的应用。这些方法对于控制线程之间的交互至关重要,尤其是在资源有限或需要确保数据一致性的情况下。 ### Java同步锁...
在Java多线程编程中,`wait()`和`notify()`是两个非常重要的方法,它们用于线程间的协作和通信。这两个方法是Java语言中的Object类提供的,因此所有的对象都可以使用。在本文中,我们将深入探讨如何使用主线程来控制...
Java多线程通讯之wait、notify的区别详解 Java多线程通讯是指在多线程编程中,线程之间如何进行通讯和同步的问题。其中,wait和notify是两个非常重要的方法,用于控制线程的状态和同步。 wait方法: wait方法是...
本文旨在解析一个具体的Java多线程示例代码,以帮助读者更好地理解`wait()`与`notify()`方法的作用及其实现机制。这两个方法是Java中实现线程间通信的重要手段之一,尤其在解决生产者消费者模型、读者写者问题等经典...
Java多线程中wait、notify、notifyAll使用详解 Java中多线程编程中,wait、notify、notifyAll三个方法是非常重要的,它们都是Object对象的方法,用于线程之间的通信。下面我们将详细介绍这三个方法的使用和作用。 ...
在学习Java过程中,自己收集了很多的Java的学习资料,分享给大家,有需要的欢迎下载,希望对大家有用,一起学习,一起进步。
- **唤醒机制**:`wait()`需要其他线程调用`notify()`或`notifyAll()`来唤醒,而`sleep()`结束后会自动恢复执行。 - **唤醒策略**:`wait()`可能唤醒单个或所有等待线程,而`sleep()`结束后自动唤醒自身。 在实际...
在Java的多线程编程中,`notify()`与`wait()`是实现线程间通信的重要方法,它们主要用于解决生产者消费者问题、读者写者问题等典型同步问题。这两个方法定义在`Object`类中,因此所有Java对象都可以作为锁来使用。在...
本文将深入探讨这些概念,以及如何使用synchronized关键字、wait-notify机制和Lock接口来实现线程间的同步与通讯。 首先,多线程是指在一个程序中同时运行多个独立的执行线程,每个线程都有自己的程序计数器、系统...