`

java线程同步细节

 
阅读更多

在java线程同步中,被多线程共享的对象该对象的函数和属性都会共享,但是函数里面的局部变量是不同的,他们被分别存储在所属线程的数据空间里面。从内存角度来分析,共享对象的函数和属性,在不同的线程中,都是同一个内存单元,而函数中的局部变量,在线程执行的时候才会产生,每个线程都在所属的内存空间里申请一个内存单元。

 

 

public class MyThread extends Thread{
	private SingleTon singleTon;
	public void set(SingleTon singleTon){
		this.singleTon = singleTon;
	
	}
	public void run(){
		try {
			singleTon.test();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args){

	MyThread thread1 = new MyThread();
	MyThread thread2 = new MyThread();
	thread1.set(SingleTon.getInstance());
	thread2.set(SingleTon.getInstance());
	thread1.setName("thread1");
	thread2.setName("thread2");
	thread1.start();
	try {
		Thread.sleep(100);
	} catch (InterruptedException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	thread2.start();
	}

}

 

 

public class SingleTon {
	private static SingleTon singleTon=new SingleTon();
	private static SingleTon classMember =singleTon;
	public static SingleTon getInstance(){
		if(singleTon == null)
			singleTon = new SingleTon();
	 return singleTon;
	}
	
	public void test() throws InterruptedException{
		SingleTon localMember =new SingleTon();
		System.out.println(Thread.currentThread().getName()+" classMember = "+classMember);
		System.out.println(Thread.currentThread().getName()+" localMember = "+localMember);
		
	}
}
 

打印结果:
thread1 classMember = SingleTon@1fb8ee3
thread1 localMember = SingleTon@61de33
thread2 classMember = SingleTon@1fb8ee3
thread2 localMember = SingleTon@10b30a7

可以看到thread1,thread2中的classMember是一个内存单元,而localMember是不同的内存单元
分享到:
评论

相关推荐

    JAVA 线程实现数据库的主从同步更新

    在Java编程环境中,...总之,使用Java线程实现数据库主从同步更新是一种常见且实用的技术手段,它涉及到多线程编程、数据库操作、事务管理等多个方面。理解和掌握这些知识点对于开发高可用性的分布式系统至关重要。

    线程 JAVA java线程 java线程第3版 java线程第2版第3版合集

    电子书相关:包含4个有关JAVA线程的电子书(几乎涵盖全部有关线程的书籍) OReilly.Java.Threads.3rd.Edition.Sep.2004.eBook-DDU Java Thread Programming (Sams) java线程第二版中英文 java线程第二版中英文 ...

    java课程设计线程同步五子棋.zip

    在Java编程语言中,线程同步是一个关键概念,特别是在多线程编程中,它用于确保多个线程在访问共享资源时能正确协调,避免数据不一致性和竞态条件。五子棋游戏是一个典型的多线程应用场景,因为它涉及到两个玩家交替...

    java 多线程设计模式 进程详解

    《Java线程 高清晰中文第二版》中文第二版(PDF) 前言 第一章 线程简介 Java术语 线程概述 为什么要使用线程? 总结 第二章 Java线程API 通过Thread类创建线程 使用Runable接口的线程 线程的生命周期 线程命名 ...

    JAVA多线程练习题答案。

    这些题目涵盖了 JAVA 多线程编程的基本概念和技术,包括线程的生命周期、线程同步、线程状态、线程优先级、线程安全等方面。 一、单项选择题 在单项选择题中,我们可以看到各种关于 JAVA 多线程编程的基本概念和...

    Java线程pdf

    - **线程同步**:由于线程共享同一个进程的资源,因此必须处理好线程间的同步问题,避免数据竞争和死锁。Java提供了多种同步机制,如`synchronized`关键字、`ReentrantLock`类和`Semaphore`等。 - **线程通信**:...

    JAVA线程停止的方法

    本文将深入探讨Java线程停止的方法,特别是通过一个示例代码片段来解析如何利用标志变量(Flag)控制线程的生命周期,以及这种方法背后的原理与最佳实践。 ### Java线程停止方法概述 在Java中,直接调用线程的`...

    java多线程网络传输文件(非同步)

    ### Java多线程网络传输文件(非同步) #### 概述 在现代软件开发中,尤其是在涉及大量数据传输的应用场景下,高效的文件传输方案尤为重要。Java作为一种广泛应用的编程语言,提供了丰富的工具和技术来实现高性能...

    JAVA编写的多线程小弹球测试

    Java提供了多种线程同步机制,如synchronized关键字、wait/notify机制、ReentrantLock等。在这个程序中,开发者可能会使用这些机制确保弹球的位置和速度更新是安全的。 其次,弹球的随机出现和随机选择颜色涉及到...

    Android 线程同步Demo

    具体实现细节,可以通过链接中的博客文章(http://blog.csdn.net/u011315960/article/details/70209621)进一步了解,博客可能详细讲解了如何在实际的Android应用中设计和实现线程同步的Demo。 总之,理解并熟练...

    java多线程.pdf

    Java线程调度策略遵循操作系统的线程调度机制,同时也提供了设置线程优先级的功能,但需要注意的是,线程的优先级仅作为提示性的信息,并不能完全保证线程的实际执行顺序。 #### 五、案例分析 假设我们需要开发一...

    四种线程同步控制方法介绍

    ### 四种线程同步控制方法详解 #### 引言 在并发编程中,线程同步是至关重要的一环。为了防止多个线程间因...通过深入理解这些基本概念,开发者可以更好地掌握线程同步的技术细节,从而编写出更高效的并发应用程序。

    java线程api学习文档

    Java线程API是Java编程语言中的一个重要组成部分,它允许开发者在一个程序中同时执行多个任务,提高了应用程序的效率和响应性。...通过深入阅读"Java线程.pdf"文档,可以进一步学习这些概念的细节和实践应用。

    Java多线程设计模式_清晰完整PDF版 Java多线程设计模式源代码

    Java多线程设计模式是Java开发中的重要领域,它涉及到如何在并发环境下高效、安全地管理资源和控制程序执行流程。本资料集包含了清晰完整的PDF版书籍和源代码,为学习和理解Java多线程设计模式提供了丰富的素材。 ...

    java线程学习一4

    在"java线程学习一4"这个主题中,我们将会深入探讨Java中的多线程概念,以及如何通过源码理解和使用相关工具进行线程管理。 首先,我们需要理解Java中的线程创建方式。Java提供了两种主要的线程创建方法:继承...

    最好的java多线程电子书

    ### 最好的Java多线程电子书 #### 一、并发与多任务 - **并发**:指在同一时间段...通过本电子书的学习,读者可以深入理解Java多线程编程的核心概念和技术细节,为开发高性能和健壮的多线程应用程序打下坚实的基础。

    黑马程序员_张孝祥_Java多线程与并发库 视频+代码+资料

    4. **线程同步与死锁**:当多个线程访问共享资源时,为了避免数据不一致问题,需要使用同步机制。但同步不当可能会导致死锁,这是多个线程互相等待对方释放锁的情况。 5. **线程通信**:线程间的通信主要通过共享...

    java多线程

    2. 线程同步和互斥 - 了解同步机制(synchronized)和锁(Lock)的使用,包括同步方法和同步块; - 防止线程安全问题,例如竞态条件(Race Condition); - 掌握死锁的概念和避免死锁的策略。 3. 线程间通信 - ...

    java多线程下载文件

    1. **线程同步**:多线程操作同一文件时,必须注意线程之间的同步问题,避免数据冲突。可以使用`synchronized`关键字或者`ReentrantLock`等机制来控制对共享资源的访问。 2. **断点续传**:在下载过程中,如果遇到...

    java多线程案例——未完成

    Java线程有10个优先级(1-10,`Thread.MIN_PRIORITY`到`Thread.MAX_PRIORITY`),但优先级对线程调度的影响并不总是明显,取决于JVM和操作系统。 7. **并发工具类**: `java.util.concurrent`包提供了丰富的并发...

Global site tag (gtag.js) - Google Analytics