`
退役的龙弟弟
  • 浏览: 453851 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

多线程同步问题

 
阅读更多

1.Resource.java

 

package ThreadTongXin;

public class Resource {
	public String name="ru";
	public String sex="nan";
}

 

2. Input.java输入数据的线程方法类

 

 

package ThreadTongXin;

public class Input implements Runnable{
	Resource r;
	public Input(Resource r) {
		this.r = r;
	}
	public void run() {
		int x=0;
		while(true){
			//解决对同一对象操作的线程同步问题(输入和输出都是对同一个对象操作,比且保证在输入时,
			//不能输出,输出时不能输入)
			//这里锁定r对象,避免输入输出时的错乱问题
			synchronized(r){
				if(x==0){
					r.name="mike";
					r.sex="男";
				}else{
					r.name="lily";
					r.sex="gril";
				}
				x=(x+1)%2;
			}
		}
	}
	
}

 

3.Output.java(输出数据的方法类)

package ThreadTongXin;

public class Output implements Runnable{
	Resource r;
	public Output(Resource r){
		this.r=r;
	}
	public void run() {
		while(true){
			//解决对同一对象操作的线程同步问题(输入和输出都是对同一个对象操作,比且保证在输入时,
			//不能输出,输出时不能输入)
			//这里锁定r对象,避免输入输出时的错乱问题
			synchronized(r){
				System.out.println(r.name+"*********"+r.sex);
			
			}
		}
		
	}
	
}
 

 

4.ResourceTest.java

 

package ThreadTongXin;

import static org.junit.Assert.*;

import org.junit.Test;

public class ResourceTest {

	@Test
	public void test() {
		Resource r=new Resource();
		Input in=new Input(r);
		Output out=new Output(r);
		Thread t1=new Thread(in);
		Thread t2=new Thread(out);
		t1.start();
		t2.start();
	}

}
 

 

分享到:
评论

相关推荐

    c# 多线程 同步问题解决

    "C# 多线程同步问题解决" C# 中的多线程机制是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务。这可以提高 CPU 的利用率,因为任何一个程序员都不希望自己的程序很多时候没事...

    Java多线程同步问题的探究.pdf

    在探究Java多线程同步问题时,需要关注的关键知识点包括synchronized关键字的使用、JDK 5引入的java.util.concurrent.locks包下的锁机制、以及JDK 1.2中ThreadLocal类的使用。此外,了解JVM(Java虚拟机)在处理多...

    Java多线程同步问题分析.pdf

    Java多线程同步问题分析主要关注的是在并发环境中如何有效地管理共享资源,避免出现数据竞争和不一致性。在Java编程中,多线程是提升程序性能的重要手段,尤其是在服务器端应用和服务中。然而,当多个线程同时访问并...

    java多线程同步问题

    多线程注意:wait()方法的调用要有判定条件常用 while () obj.wait(timeout, nanos); ... // Perform action appropriate to condition } synchronized会影响共享数据,但对其他语句的执行不会有规律了!

    JNI 多线程同步机制的源码实现

    2. **多线程同步问题** 当多个Java线程调用同一个本地方法,它们可能同时访问和修改共享资源,这就需要同步控制。在Java中,我们可以使用`synchronized`关键字、`java.util.concurrent`包中的工具类等来实现同步。...

    MFC中的多线程同步

    通过深入研究和实践"MfcMutexes"程序,你可以更好地理解如何在MFC环境中处理多线程同步问题,以及如何预防和解决潜在的并发问题。这不仅有助于提升你的编程技能,还能让你在面对复杂的多线程应用时更加游刃有余。

    c++多线程同步——信号量

    在C++编程中,多线程同步是一种关键的技术,它允许多个执行线程协同工作,以避免数据竞争和死锁等并发...在MFC工程中,通过自定义信号量类和Windows API,我们可以有效地解决多线程同步问题,确保程序的正确性和性能。

    java 多线程同步方法的实例

    现在,我们来看一个具体的实例——银行账户转账操作,这是一个典型的多线程同步问题。假设我们有如下类: ```java public class Account { private double balance; public synchronized void deposit(double ...

    多线程同步利用ccriticalsection

    在Windows编程环境中,MFC(Microsoft Foundation Classes)库提供了一种高效的方式来处理多线程同步问题,特别是通过使用`CCriticalSection`类。这个类是Windows API中的`CRITICAL_SECTION`结构的封装,用于实现...

    多线程代码 经典线程同步互斥问题 生产者消费者问题

    a: 创建一个线程 b: 创建多个线程 c: 多线程访问同一资源 d: 经典线程同步互斥问题 e: 使用关键段解决子线程互斥问题 f: 利用事件实现线程同步问题 ...I: 信号量 semaphore 解决线程同步问题

    VC++ 2010 通过Event实现多线程同步

    总之,VC++ 2010中的Event机制是解决多线程同步问题的有效工具,理解和熟练掌握其用法对于编写高效、安全的多线程程序至关重要。通过深入研究提供的示例代码,我们可以更直观地理解Event在实际编程中的应用,提升...

    多线程的同步问题(1)

    ### 多线程同步问题详解 #### 一、引言 在现代软件开发中,多线程编程技术因其能够显著提升程序性能而受到广泛重视。然而,随着线程数量的增加,如何确保线程间正确地共享数据成为了一个挑战。其中,线程同步问题...

    使用三种VC的多线程同步方法编写一个多线程的程序

    1.使用三种VC的多线程同步方法编写一个多线程的程序(要求在屏幕上先显示Hello,再显示World)。 1)基于全局变量的多线程同步程序; 2)基于事件的多线程同步程序; 3)基于临界区的多线程同步程序。

    多线程同步解决卖票问题

    多线程同步解决卖票问题

    11-线程同步

    "哲学家就餐"问题是一个经典的多线程同步问题,描述了五个哲学家围坐在一张圆桌旁,每个人都需要同时使用左右两边的筷子来吃饭。如果不加控制,可能会出现饿死的情况,即某些哲学家一直无法获取到筷子。解决这个问题...

    Java多线程同步.pdf

    因此,在使用Java多线程同步机制时,需要小心避免这些问题的出现。 Java多线程同步机制在实际应用中的应用 Java多线程同步机制在实际应用中有很多应用,例如: * 在线银行系统中,使用Java多线程同步机制来确保...

    MFC 多线程及线程同步

    MFC 多线程及线程同步 MFC 多线程及线程同步 MFC 多线程及线程同步

    以银行取钱为例模拟Java多线程同步问题完整代码

    Java 多线程同步问题完整代码 本文主要介绍了Java 多线程同步问题完整代码,以银行取钱为例,通过代码实例来演示多线程同步问题的解决方案。多线程同步是指在同一程序中有多个顺序流在执行,并且这些顺序流之间需要...

    秒杀多线程第十六篇 多线程十大经典案例之一 双线程读写队列数据

    在《秒杀多线程系列》的前十五篇中介绍多线程的相关概念,多线程同步互斥问题《秒杀多线程第四篇一个经典的多线程同步问题》及解决多线程同步互斥的常用方法——关键段、事件、互斥量、信号量、读写锁。为了让大家...

Global site tag (gtag.js) - Google Analytics