- 浏览: 2290163 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (357)
- J2EE (49)
- JavaScript (40)
- Spring (19)
- Struts (5)
- CSS (8)
- Hibernate (16)
- Java (67)
- DWR (4)
- JSON (3)
- XFIRE (1)
- Tomcat (1)
- Ant (2)
- 设计模式 (2)
- 经典收藏 (2)
- JSP (10)
- Linux (0)
- WebLogic (11)
- myeclipse (13)
- Buffalo (4)
- 文件上传相关 (1)
- oracle (33)
- html (6)
- JSTL (3)
- SVN (2)
- GIT (1)
- 孙卫琴(Java网络编程精解) (1)
- DOM4J (2)
- Swing (1)
- AJAX (1)
- Eclipse (5)
- 日志组件 (3)
- PowerDesigner (1)
- Jquery (22)
- IT技术开发相关网址 (1)
- Nutz (1)
- 其它 (1)
- Velocity (3)
- WebService (1)
- MySql (2)
- Android (1)
- Maven (2)
- Quartz (11)
- Lucene (1)
- springsource (1)
- Junit (1)
- Activiti (0)
最新评论
-
yzlseu:
拼凑,没有营养
Activiti进阶—分配组任务 -
zhangsenhao:
非常赞!代码很清楚
SpringMVC3.0+MyIbatis3.0(分页示例) -
xiamw2000:
分页写得不对,应该是 : order by ${orderNa ...
SpringMVC3.0+MyIbatis3.0(分页示例) -
sheertewtw:
...
SpringMVC:上传与下载 -
kingtoon:
...
XSS之xssprotect
场景一:要求二个线程各自运行,中间不产生交互行为,等一个方法运行完了,在运行另外一个方法
运行结果:
它们之间没有交互的行为,就好像二个陌生人一样,各做各的,你们相识吧!
场景二 :要求二个线程之间相互交互
运行结果如下:
它们之间很好的进行了交互,一问一答,多么有趣呀
public class SweetheartsTest { public static void main(String[] args) { new SweetheartsTest().init(); } private void init() { final Sweethearts sweethearts = new Sweethearts(); // 这二个方法不会产生交互,各执行各的,中间不会被打断 //synchronized作用于方法上,相当于在对象上加了锁 new Thread(new java.lang.Runnable() { public void run() { for (int i = 1; i <= 50; i++) { sweethearts.boy(i); } } }).start(); for (int i = 1; i <= 50; i++) { sweethearts.girl(i); } } class Sweethearts { synchronized void boy(int i) { System.out.println("我好想见到一个女孩呀,怎么没有呢!,次数: " + i); } synchronized void girl(int i) { System.out.println("怎么这条路上男孩子都没有一个呢!死哪了...,次数: " + i); } } }
运行结果:
怎么这条路上男孩子都没有一个呢!死哪了...,次数: 1 怎么这条路上男孩子都没有一个呢!死哪了...,次数: 2 怎么这条路上男孩子都没有一个呢!死哪了...,次数: 3 怎么这条路上男孩子都没有一个呢!死哪了...,次数: 4 怎么这条路上男孩子都没有一个呢!死哪了...,次数: 5 怎么这条路上男孩子都没有一个呢!死哪了...,次数: 6 怎么这条路上男孩子都没有一个呢!死哪了...,次数: 7 我好想见到一个女孩呀,怎么没有呢!,次数: 1 我好想见到一个女孩呀,怎么没有呢!,次数: 2 我好想见到一个女孩呀,怎么没有呢!,次数: 3 我好想见到一个女孩呀,怎么没有呢!,次数: 4 我好想见到一个女孩呀,怎么没有呢!,次数: 5 我好想见到一个女孩呀,怎么没有呢!,次数: 6 我好想见到一个女孩呀,怎么没有呢!,次数: 7 我好想见到一个女孩呀,怎么没有呢!,次数: 8 我好想见到一个女孩呀,怎么没有呢!,次数: 9 我好想见到一个女孩呀,怎么没有呢!,次数: 10 我好想见到一个女孩呀,怎么没有呢!,次数: 11 我好想见到一个女孩呀,怎么没有呢!,次数: 12 ....
它们之间没有交互的行为,就好像二个陌生人一样,各做各的,你们相识吧!
场景二 :要求二个线程之间相互交互
public class SweetheartsTest2 { public static void main(String[] args) { new SweetheartsTest2().init(); } private void init() { final Sweethearts bb = new Sweethearts(); // 这个类的二个方法,相互交互,很好的运用了wait与notify new Thread(new java.lang.Runnable() { public void run() { for (int i = 1; i <= 50; i++) { bb.boy(i); } } }).start(); for (int i = 1; i <= 50; i++) { bb.girl(i); } } class Sweethearts { boolean tag = false; synchronized void boy(int i) { //判断是否被女孩唤醒 while (!tag) { try { //继续等待女孩发问 wait(); } catch (InterruptedException e) { e.printStackTrace(); } } //女孩问了,男孩回答 System.out.println("男孩说到:我叫刘风!"); //设置为等待女孩发问的标记 tag = false; //唤醒女孩发问 notify(); } synchronized void girl(int i) { //判断是否被男孩唤醒 while (tag) { try { //等待男孩的回答 wait(); } catch (InterruptedException e) { e.printStackTrace(); } } //男孩回答完了,女孩又问他 System.out.print("女孩问到:Hello,小子叫什么名字呢!"); //设置为等待男孩回答的标记 tag = true; //唤醒男孩回答问题 notify(); } } }
运行结果如下:
女孩问到:Hello,小子叫什么名字呢!男孩说到:我叫刘风! 女孩问到:Hello,小子叫什么名字呢!男孩说到:我叫刘风! 女孩问到:Hello,小子叫什么名字呢!男孩说到:我叫刘风! 女孩问到:Hello,小子叫什么名字呢!男孩说到:我叫刘风!
它们之间很好的进行了交互,一问一答,多么有趣呀
发表评论
-
java json-lib & jQuery & jsonp
2016-06-30 11:31 832参考链接: 1、http://hanqunfeng.iteye ... -
随机分配算法(Intege)
2016-01-08 13:05 5202参考资料: http://blog.csdn.net/yaer ... -
XSS之xssprotect
2012-12-07 23:03 29496参考资料 1 跨网站脚本 ... -
Java之Thread(线程题)
2011-10-31 12:33 1978特别说明:java线程相关的参考了张孝祥老师的代码 参考资料 ... -
Java之ThreadLocal(Synchronized)
2011-10-31 10:10 2697参考资料 1 深入研究java.lang.ThreadLoca ... -
Java之synchronized深入应用
2011-10-23 08:03 1949参考资料 1 java synchronized详解 http ... -
Java之Timer入门
2011-10-11 15:32 1699参考资料 1 java中timer用 ... -
Java之线程(匿名内部类)
2011-10-10 16:36 164381 Thread对象 Thread t = new Thr ... -
Java之线程(join)
2011-10-10 15:39 1486运用场景:多个线程之间 ... -
Java之线程(synchronized,wait(),notify(),notifyAll())
2011-10-10 15:03 3256参考资料 Java多线程入门大全(适用于有一定基础者) htt ... -
Java之线程(sleep,线程名)
2011-10-10 13:09 9719参考资料 1 Java线程:创建与启动 http://lava ... -
Java之线程入门
2011-10-10 11:11 1538参考资料 1 Java线程:概 ... -
java之表反向生成类
2011-09-23 16:41 3488环境:XP+JDK1.5+Oracle10g 注意事项 1 请 ... -
java之线程, NIO学习资料
2011-09-19 12:13 1135Concurrent In Java 6 第一部分 集合 ... -
Java之BigDecimal
2011-09-15 10:12 18036参考资料 1 java.math.BigDecimal的用法 ... -
java.lang.OutOfMemoryError异常解决方法
2011-08-27 16:47 2115转载:java.lang.OutOfMemoryError异常 ... -
Jcom之jp.ne.so_net.ga2.no_ji.jcom.JComException: createInstance() failed HRESULT=
2011-08-25 12:33 11749参考资料 java应用jcom将word转pdf http:/ ... -
Quartz之AnnualCalendar
2011-08-11 17:14 5824问题1 我想排除一年中 ... -
Quartz之InterruptableJob
2011-08-11 11:03 11784问题1 由于业务需要,停止Quartz中正在执行的任务 Qua ... -
Quartz之JobExecutionException
2011-08-11 10:06 13417问题1 如果你的任务执 ...
相关推荐
总结一下,`wait()`, `notify()`, 和 `notifyAll()` 是Java多线程编程中的核心工具,它们与`synchronized`关键字一起,为线程间的协作提供了强大的支持。理解并熟练掌握这些概念,对于编写高效、安全的多线程程序至...
在提供的压缩包文件`java_sychronization`中,可能包含了一些示例代码,用于演示如何在Java中使用`synchronized`关键字以及`wait()`和`notify()`方法。通过研究这些样例,你可以更深入地了解这些工具的用法和效果。...
`wait()`、`notify()`和`notifyAll()`是Java中的三个关键字,它们属于Object类的方法,主要用于线程间的通信,尤其在实现生产者消费者模式时发挥着重要作用。本文将深入探讨这些方法以及如何在实际场景中应用它们。 ...
在本文中,我们将通过示例代码详细介绍Java多线程wait和notify的使用,帮助读者更好地理解和掌握这两个机制。 wait机制 在Java中,wait机制用于暂停当前线程的执行,并释放当前对象的锁,以便让其他线程获得锁并...
在Java的多线程编程中,`notify()`与`wait()`是实现线程间通信的重要方法,它们主要用于解决生产者消费者问题、读者写者问题等典型同步问题。这两个方法定义在`Object`类中,因此所有Java对象都可以作为锁来使用。在...
本文旨在解析一个具体的Java多线程示例代码,以帮助读者更好地理解`wait()`与`notify()`方法的作用及其实现机制。这两个方法是Java中实现线程间通信的重要手段之一,尤其在解决生产者消费者模型、读者写者问题等经典...
Java程序并发的Wait-Notify机制是Java多线程编程中的一种重要同步工具,它允许线程之间通过共享对象进行通信和协作。这个机制基于Java的内置锁(也称为监视器锁),通常与`synchronized`关键字一起使用。在Java中,`...
下面通过一个简单的示例来演示`wait`、`notify`和`notifyAll`的使用: ```java public class TestWaitNotify { private final Object lock = new Object(); public void producer() { synchronized (lock) { /...
在使用`wait()`和`notify()`时,必须确保它们在`synchronized`上下文中调用,这通常是在`synchronized`方法或`synchronized`代码块内。这是因为在非同步环境中调用这些方法会导致`IllegalMonitorStateException`。...
`synchronized`还提供了基于`wait()`、`notify()`和`notifyAll()`的方法,用于线程间的通信。这些方法必须在同步块或同步方法中使用,否则会抛出`IllegalMonitorStateException`。等待/通知机制可以让一个线程在特定...
本文将深入探讨Java中的wait()、notify()和notifyAll()方法,以及synchronized关键字和原子操作在多线程环境中的应用。 1. **wait()方法**: - wait()是Object类的一个方法,它的作用是让当前线程暂停执行并释放它...
在Java多线程编程中,`wait()`和`notify()`是两个非常重要的方法,它们用于线程间的协作和通信。这两个方法是Java语言中的Object类提供的,因此所有的对象都可以使用。在本文中,我们将深入探讨如何使用主线程来控制...
Java提供了synchronized关键字来实现线程同步,确保同一时刻只有一个线程能执行特定代码块。 5. **死锁** 死锁是两个或多个线程相互等待对方释放资源而造成的僵局。避免死锁的关键在于遵循资源请求的顺序化和避免...
这些示例可能包含并发控制(如synchronized关键字,Lock接口),线程池的使用(ExecutorService,ThreadPoolExecutor)以及线程间的通信(如wait(),notify(),Condition等)。 其次,URL/RMI编程示例代码涉及到...
线程同步机制如synchronized关键字、wait/notify、Semaphore等也是多线程编程中的重要知识点。 6. **网络编程**:Java的Socket编程允许开发者创建客户端和服务器应用程序,进行TCP/IP通信。此外,URL和...
`wait` 和 `notify` 是Java语言提供的原生方法,用于解决线程之间的同步问题。本文将详细介绍这些方法的基本原理、使用场景以及最佳实践。 #### 二、基本概念 在Java中,`wait()` 和 `notify()` 方法用于实现线程间...
Java 线程保护性暂停(wait,notify 实现) ...本文详细讲解了 Java 线程中的保护性暂停机制,即 wait 和 notify 方法的实现,并提供了一个实际的示例代码,演示如何使用保护性暂停机制来实现线程之间的通信。
public class ThreadWaitNotify { public static void main(String[] args) throws InterruptedException { DemoTest demoTest = new DemoTest(); // 使用线程池异步执行waitTest方法 ExecutorService ...
- `synchronized`无法解决线程间的通讯问题,比如生产者消费者问题,此时需要配合`wait()`和`notify()`方法。 - `synchronized`关键字与Java内存模型(JMM)紧密关联,确保了可见性和有序性,防止数据竞争。 总之...
示例工程可能包括Thread类和Runnable接口的使用,以及线程同步和互斥的概念,例如synchronized关键字、wait()、notify()和notifyAll()方法。 6. **网络编程**:Java通过Socket和ServerSocket类支持网络通信。Java...