`
Luob.
  • 浏览: 1589909 次
  • 来自: 上海
社区版块
存档分类
最新评论

java 多线程同步+通信

    博客分类:
  • Java
阅读更多

/**
 *父子线程 交替打印10 次, 100次    如此循环 n次
 */
public class TraditionalThreadCommunication {
	static boolean isSubRun=true;
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		/*new Thread(
			 new Runnable() {
				
				@Override
				public void run() {
					int num=0;
					synchronized (TraditionalThreadCommunication.class) {
						while (num<=4) {
							if(!isSubRun){
								try {
									TraditionalThreadCommunication.class.wait();
								} catch (InterruptedException e) {
									// TODO Auto-generated catch block
									e.printStackTrace();
								}
							}
							for (int i = 0; i < 10; i++) {
								System.out.println(Thread.currentThread().getName()+" run "+i);
							}
							isSubRun=false;
							TraditionalThreadCommunication.class.notify();
							num++;
						}
					}
				}
			}
		).start();
		
		new Thread(
				new Runnable(){
					@Override
					public void run() {
						int num=0;
						while(num<=4){
							synchronized (TraditionalThreadCommunication.class) {
								if(isSubRun){
									try {
										TraditionalThreadCommunication.class.wait();
									} catch (InterruptedException e) {
										// TODO Auto-generated catch block
										e.printStackTrace();
									}
								}
								for (int i = 0; i < 100; i++) {
									System.out.println(Thread.currentThread().getName()+" run "+i);
								}
								
								isSubRun=true;
								TraditionalThreadCommunication.class.notify();
								num++;
							}
							
						}
					}
					
				}
				
		).start();*/
		
		final Business bus=new Business();
		new Thread(){
			@Override
			public void run() {
				for (int i = 1; i < 5; i++) {
					bus.sub(i);
				}
			}
		}.start();
		
		new Thread(new Runnable(){
			@Override
			public void run() {
				for (int i = 1; i < 5; i++) {
					bus.main(i);
				}
			}
		}).start();

	}
	
	

}

class Business{
	private boolean sShouldSub=true;
	public synchronized void sub(int i){
		if(!sShouldSub){  //这里换成 while  比 if  更安全 , 健壮
			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);
		}
		sShouldSub=false;
		this.notify();
	}
	
	public synchronized void main(int i){
		while(sShouldSub){//这里换成 while 比 if  更安全 , 健壮 
			try {
				this.wait();
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
			
		for (int j = 0; j < 100; j++) {
			System.out.println("Main thread sequence of "+j+" loop of"+i);
		}
		sShouldSub=true;
		this.notify();
	}
	
}
分享到:
评论

相关推荐

    java+多线程+同步详解源代码学习

    Java多线程与同步是Java编程中的核心概念,它们在构建高效、响应迅速的应用程序时起着至关重要的作用。在大型系统开发中,多线程技术使得程序能够同时执行多个任务,提高系统的并发性,而同步机制则确保了在多线程...

    java多线程client+server聊天程序源代码设计案例

    Java多线程Client+Server聊天程序是一个典型的网络通信应用,涉及到并发处理、Socket编程和数据交换等关键概念。在这个设计案例中,我们将深入探讨以下几个重要知识点: 1. **Java多线程**:在聊天程序中,多线程是...

    java多线程通信图解

    java 多线程 其实就是每个线程都拥有自己的内存空间,多线程之间的通信,比例A线程修改了主内存(main方法的线程)变量,需要把A线程修改的结果同步到主线程中,这时B线程再从主线程获取该变量的值,这样就实现了...

    java+多线程+同步详解Java源码

    Java多线程与同步是Java编程中的核心概念,它们在构建高效、响应迅速的应用程序时起着至关重要的作用。在Java中,多线程允许同时执行多个代码段,从而提高程序的执行效率,特别是在处理I/O密集型或计算密集型任务时...

    java线程同步及通信

    Java线程同步与通信是多线程编程中的关键概念,用于解决并发访问共享资源时可能出现的数据不一致性和竞态条件问题。以下将详细介绍这两个主题,以及如何通过代码示例进行演示。 1. **线程同步**: 线程同步是确保...

    java多线程代码案例(创建线程,主线程,线程优先级,线程组,线程同步,线程间的通信)

    本文将深入探讨Java多线程中的关键知识点,包括创建线程、主线程、线程优先级、线程组、线程同步以及线程间的通信。 1. **创建线程** 在Java中,可以通过两种方式创建线程:继承`Thread`类或实现`Runnable`接口。...

    java 多线程同步

    Java多线程同步是Java编程中关键的并发概念,它涉及到如何在多个线程访问共享资源时保持数据的一致性和完整性。`java.util.concurrent`包是Java提供的一个强大的并发工具库,它为开发者提供了多种线程安全的工具,...

    java多线程经典案例

    本案例将深入探讨Java多线程中的关键知识点,包括线程同步、线程通信和线程阻塞。 线程同步是为了防止多个线程同时访问共享资源,导致数据不一致。Java提供了多种同步机制,如synchronized关键字、Lock接口...

    java+多线程+同步详解

    Java多线程与同步是Java编程中的重要概念,它们在构建高效、响应迅速的应用程序时起着关键作用。本文将深入探讨Java中的多线程机制以及如何通过同步控制来确保线程安全。 首先,让我们理解什么是多线程。在单线程...

    Java多线程知识点总结

    Java多线程是Java编程语言中一个非常重要的概念,它允许开发者在一个程序中创建多个执行线程并行运行,以提高程序的执行效率和响应速度。在Java中,线程的生命周期包含五个基本状态,分别是新建状态(New)、就绪...

    java多线程的讲解和实战

    Java多线程是Java编程中的重要概念,尤其在如今的多核处理器环境下,理解并熟练掌握多线程技术对于提高程序性能和响应速度至关重要。本资料详细讲解了Java多线程的原理,并提供了丰富的实战代码,非常适合Java初学者...

    Java多线程技术在网络通信系统中的应用.pdf

    总结来说,Java多线程技术在网络通信系统中的应用包括了线程间通信的原理、多线程实现网络通信的原理、线程安全及同步控制的有效途径,以及网络通信编程中的Socket类实现。掌握这些技术要点,对于进行高效、稳定、...

    java多线程+Socket+Swing局域网聊天软件(客户端源码)

    总的来说,这个"java多线程+Socket+Swing局域网聊天软件"项目涵盖了Java并发编程、网络通信以及GUI设计的重要知识点。通过学习和分析这个源码,开发者可以深入理解如何在Java环境中开发实时、互动的客户端应用。

    Java多线程同步机制在售票系统的实现

    ### Java多线程同步机制在售票系统的实现 #### 一、引言 随着计算机硬件的发展,多核处理器已经成为主流配置,这为多线程编程提供了更广阔的应用场景。多线程能够充分利用多核处理器的优势,提高程序的并发性和...

    java多线程Demo

    3. 多线程同步与通信: 在多线程环境下,可能会出现数据竞争问题,为了解决这个问题,Java提供了多种同步机制,如synchronized关键字、wait/notify机制、Lock锁(ReentrantLock)等。synchronized用于控制对共享...

    java 多线程 同步详解

    Java多线程同步详解 在Java编程中,多线程是一种常见的并发执行方式,它可以提高程序的执行效率,充分利用CPU资源。然而,多线程环境下数据的安全性问题不容忽视,这就引出了Java中的同步机制。本文将深入探讨Java...

    java tcp多线程通信

    Java TCP多线程通信是网络编程中的一个重要概念,它结合了Java的Socket编程与多线程技术,使得多个客户端能够同时与服务器进行交互。在Java中,TCP(传输控制协议)提供了一种可靠的数据传输方式,确保数据的有序、...

    汪文君JAVA多线程编程实战(完整不加密)

    Java多线程允许程序同时执行多个独立的代码段,这在处理大数据、网络通信、用户界面更新等场景中尤其有用。书中详细介绍了Java多线程的核心概念,如线程的创建、启动、同步、协作以及生命周期管理。读者将学习如何...

    JAVA多线程模式高清版+DEMO

    Java多线程是Java编程中的一个核心概念,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,实现多线程有两种主要方式:通过继承`Thread`类或者实现`Runnable`接口。这个压缩包文件"JAVA多...

Global site tag (gtag.js) - Google Analytics