`
xp9802
  • 浏览: 1205106 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

在java中线程-线程的互斥技术的Demo

阅读更多
在java中线程-线程的互斥技术的Demo,代码如下:

public class TraditionalThreadSynchronized {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		new TraditionalThreadSynchronized().init();
	}

	private void init(){
		/**内部类不能访问局部变量,所以这里要用final*/
		final Outputer outputer = new Outputer();
		new Thread(new Runnable() {
			@Override
			public void run() {
				while(true){	
					try {
						Thread.sleep(5);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					outputer.output("GavinlinHere");
				}	
				
			}
		}).start();
		
		new Thread(new Runnable() {
			@Override
			public void run() {
				while(true){	
					try {
						Thread.sleep(5);
					} catch (InterruptedException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
					outputer.output("JiaoZhaoHere");
				}	
				
			}
		}).start();
	}
	
	static class Outputer{
		private String name;
		
		/**
		 * 可以与outputsync同步,不可与static的同步
		 * @param name
		 */
		public void output(String name){
			this.name = name;
			int len = this.name.length();
			synchronized(this){
				for(int i = 0;i < len; i++){
					System.out.print(this.name.charAt(i));
				}
				System.out.println();
			}	
		}
		
		public synchronized void outputsync(String name){
			this.name = name;
			int len = this.name.length();
			for(int i = 0;i < len; i++){
				System.out.print(this.name.charAt(i));
			} 
			
			System.out.println();
		}
		
		/**
		 * 若想与output同步,必须output的锁为Outputer.class
		 * @param name
		 */
		public static synchronized void sOutputSync(String name){
	
			int len = name.length();
			for(int i = 0;i < len; i++){
				System.out.print(name.charAt(i));
			}
			System.out.println();
		}
	}
}
分享到:
评论

相关推荐

    java 多线程synchronized互斥锁demo

    标题中的"java 多线程synchronized互斥锁demo"指的是一个示例,展示了如何在多线程环境下使用`synchronized`关键字创建互斥锁,确保同一时间只有一个线程可以访问特定的代码块或方法。 描述中的"一个多线程访问的同...

    java-SE-demo Java学习资料 自习资料练习

    在Java中,一切皆为对象,理解和熟练掌握类的定义、对象的创建、封装、继承、多态等特性至关重要。"java-se-demo"可能包含创建简单类的示例,以及如何通过对象进行交互的练习。 接着,文件I/O操作在实际项目中十分...

    java多线程的条件对象和锁对象demo

    在Java编程语言中,多线程是并发执行多个任务的关键技术。这允许程序在等待某个操作完成时继续处理其他任务,从而提高了系统资源的利用率和程序的响应速度。本示例"java多线程的条件对象和锁对象demo"着重探讨了如何...

    多线程互斥锁和条件变量demo

    在“多线程互斥锁demo”中,你可能会看到以下关键步骤: 1. 初始化互斥锁:使用pthread_mutex_init()函数初始化一个互斥锁,设置其属性。通常,无需特殊属性,直接使用默认值即可。 2. 加锁与解锁:在访问共享资源...

    性能之多线程-演示Demo

    例如,在Java中,我们可以使用`Thread`类或`Runnable`接口创建新的线程。在Python中,可以使用`threading`模块来实现多线程。 多线程的优点在于,它可以充分利用多核处理器的计算能力,使得程序在等待I/O操作(如...

    C++多线程demo

    在C++编程中,多线程(Multithreading)是一种技术,它允许程序同时执行多个独立的任务或子任务。这可以极大地提高效率,特别是在多核处理器系统中,每个线程都可以在不同的处理器核心上运行。本示例"MultiThread...

    iOS多线程Demo

    在iOS开发中,多线程是一项至关重要的技术,它能够帮助开发者实现应用程序的高效运行和流畅的用户体验。本文将深入探讨“iOS多线程Demo”所体现的核心知识点,并结合实际应用进行详细阐述。 首先,我们要了解多线程...

    java线程demo

    在“demo”这个文件中,很可能是包含了一个或者多个示例,演示了如何在Java中创建线程、实现同步和处理可能的死锁问题。通过分析这些示例,我们可以更好地理解这些概念,并能将它们应用到实际的项目中。 总之,Java...

    C++11多线程demo

    在本文中,我们将深入探讨C++11中的多线程特性、互斥量的概念以及如何在Ubuntu系统上编译C++11代码。 一、C++11多线程简介 在C++11之前,多线程支持通常是通过第三方库如POSIX的pthread或者Windows的WinAPI来实现的...

    异步多线程Demo

    4. **线程的创建**:在Java中,可以通过`Thread`类的子类化或实现`Runnable`接口来创建线程;在Python中,可以使用`threading`模块的`Thread`类;在C#中,可以使用`System.Threading.Thread`类或者`Task`类进行多...

    C#多线程Demo

    在C#编程中,多线程是一个至关重要的概念,它允许程序同时执行多个任务,从而提高了应用程序的效率和响应性。本压缩包“C#多线程Demo”提供了四个具体的WinForm多线程示例,旨在帮助开发者深入理解和掌握线程的使用...

    JavaDemo_java_云课堂_

    在"JavaDemo.txt"这个文本文件中,我们可以期待找到一些关于Java编程的基础示例和实践代码。 Java是一种广泛使用的面向对象的编程语言,由Sun Microsystems(现已被Oracle收购)于1995年发布。它的设计目标是具有高...

    基于VS2010的C++多线程开发Demo

    在C++编程中,多线程技术是一种提升程序性能的重要手段,特别是在Visual Studio 2010这样的开发环境中。本文将深入探讨如何使用VS2010进行C++多线程开发,通过一个具体的Demo来阐述相关概念和技术。 首先,我们要...

    Linux c++多线程串口编程demo

    3. **互斥锁(Mutex)**:在多线程环境中,互斥锁用于保护共享资源,确保同一时间只有一个线程可以访问。`std::mutex`类提供了互斥锁的功能,可以防止数据竞争,确保数据的一致性和完整性。在这个demo中,可能使用...

    多线程的使用-一个线程池的Demo

    通过这个Demo,开发者可以学习到如何在实际应用中利用线程池实现多任务并行处理,以及如何在C++中实现线程安全的代码。 总的来说,线程池是多线程编程中不可或缺的工具,尤其在UI编程和高并发场景下,它的优势更为...

    多线程demo

    在Objective-C(标记为"oc")中,多线程技术可以帮助我们实现程序的并行处理,提高应用的性能和用户体验。本文将深入探讨如何在Objective-C中实现多线程,通过分析“多线程demo”来学习这一关键知识点。 1. **多...

    MFCACE多线程demo

    综上所述,"MFCACE多线程demo"示例将演示如何在MFC应用中有效地利用ACE库实现多线程,以及如何配置项目属性以确保编译和链接成功。通过这种方式,开发者可以充分利用ACE的并发优势,同时保持MFC的易用性和Windows...

    Android开发(个人整理01) 线程Demo源码

    在Android开发中,线程管理是一项至关重要的技能,尤其是在创建高效、流畅的用户界面时。本文将深入探讨Android中的线程及其应用,基于提供的"Android开发(个人整理01) 线程Demo源码"进行讲解。 1. **主线程(UI...

Global site tag (gtag.js) - Google Analytics