今天来写一篇Java关于多线程之线程通信例子。这是我学Java和工作这些年来,首次发表的博文,自己支持自己一下。
题目要求:写一个Java多线程程序,要求子线程循环输出10次,然后主线程循环输出10次,再接着子循环输出10次,再然后主线程循环输出10次。。。如此往复10次。
请大家帮我分析下,我的代码例子如下:
package org.jabari.tech.test;public class ConcurrentTest1 {
class BizObj {
//当前执行游标是否在子线程(true:子线程执行;false:父线程执行)
private boolean cursorInSub;
public BizObj(boolean cursorInSub) {
super();
this.cursorInSub = cursorInSub;
}
public boolean isCursorInSub() {
return cursorInSub;
}
public void setCursorInSub(boolean cursorInSub) {
this.cursorInSub = cursorInSub;
}
}
public static void main(String[] args){
ConcurrentTest1 t = new ConcurrentTest1();
//创建一个锁对象,默认当前执行子线程。
final BizObj objLock = t.new BizObj(true);
new Thread(new Runnable(){
public void run() {
for(int j=0;j<10;j++){
synchronized(objLock) {
while (!objLock.isCursorInSub()) {
try {
objLock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"-loop["+j+"]-"+i);
}
objLock.setCursorInSub(false);
objLock.notify();
}
}
}
},"sub").start();
//这里其实不需要再New一个主线程执行,因为main方法本身就是一个主线程单独执行。
// new Thread(new Runnable() {
// @Override
// public void run() {
for(int j=0;j<10;j++){
synchronized(objLock) {
while (objLock.isCursorInSub()) {
try {
objLock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
for (int i = 0; i < 10; i++) {
System.out.println(Thread.currentThread().getName()+"-loop["+j+"]-"+i);
}
objLock.setCursorInSub(true);
objLock.notify();
}
}
// }
// },"main").start();
// System.out.println(Thread.currentThread().getName()+" Finishes!");
}
}
相关推荐
开一个子线程来完成一个循环处理的工作,我在主线程中能灵活控制这个子线程的开始、暂停/继续、结束。
源码—Java多线程5—死锁和wait notify notifyAll
主要介绍了java多线程wait,notify,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,下面小编和大家一起来学习一下吧
java多线程之wait,notify的用法([ 详解+实例 ]).
java多线程下wait和notify的作用
一个理解wait()与notify()的例子,让你更好理解.
使用Java多线程的wait和notify方法实现最简单的生产者消费者模式
Java 同步方式 wait和notify/notifyall
主要介绍了Java多线程中wait、notify、notifyAll使用详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
wait set——线程的休息室 wait方法——把线程放入wait set notify方法——从wait set拿出线程 notifyAll方法——从wait set拿出所有线程 wait、notify、notifyAll是Object类的方法 线程的状态移转 跟线程有关的其他...
Java多线程机制 9.1 Java中的线程 9.2 Thread的子类创建线程 9.3 使用Runable接口 9.4 线程的常用方法 9.5 GUI线程 9.6 线程同步 9.7 在同步方法中使用wait()、notify 和notifyAll()方法 9.8 挂起、恢复和终止线程 ...
绍java多线程之wait(),notify(),notifyAll()
主要介绍了Java多线程通讯之wait,notify的区别详解,非常不错,具有一定的参考借鉴借鉴价值,需要的朋友可以参考下
Java多线程的样例代码,工程,内含wait()、notify()和sychronized的使用范例。
《JAVA多线程设计模式》PDF 下载 《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口...
Java多线程同步(wait()notify()notifyAll())[文].pdf
java中多线程编程notify、wait的使用
主线程去控制子线程wait与notify
wait, notify 和 notifyAll,这些在多线程中被经常用到的保留关键字,在实际开发的时候很多时候却并没有被大家重视。本文对这些关键字的使用进行了描述。 在 Java 中可以用 wait、notify 和 notifyAll 来实现...
本篇文章是对java多线程 wait(),notify(),notifyAll()进行了详细的分析介绍,需要的朋友参考下