`
coolszy
  • 浏览: 1411232 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

线程间数据共享

阅读更多

    当多个线程的执行代码来自同一个类的run方法,既称他们共享相同的代码;当共享访问相同的对象时,既他们共享相同的数据。

 

演示代码

import java.lang.*;

public class Demo
{
	public static void main(String[] args)
	{
		MyThread thread=new MyThread();
		new Thread(thread,"A").start();
		new Thread(thread,"B").start();
		new Thread(thread,"C").start();
	}
}

class MyThread implements Runnable
{
	private int sleepTime;
	public MyThread()
	{
		sleepTime=(int)(Math.random()*6000);  //获得随机休眠毫秒数
	}
	
	public void run()
	{
		try
		{
			System.out.println(Thread.currentThread().getName()+"要休息"+sleepTime+"ms");
			Thread.sleep(sleepTime);
			System.out.println(Thread.currentThread().getName()+"睡醒了。");
		}
		catch(Exception e)
		{
			System.out.println(Thread.currentThread().getName()+"被吵醒了!");
		}
	}
}

 

 运行结果

A要休息5299ms
B要休息5299ms
C要休息5299ms
//漫长的等待
C睡醒了。
A睡醒了。
B睡醒了。

 

    可见,因为是用一个Runnable类型的对象创建的三个新线程,这三个线程就共享了这个对象的私有成员sleepTime变量,在本次运行中,三个线程都休眠了5299毫秒。

分享到:
评论

相关推荐

    qt线程共享数据 信号和槽方式

    Qt 线程间共享数据是本文介绍的内容,多的不说,先来啃内容。Qt线程间共享数据主要有两种方式: 使用共享内存。即使用一个两个线程都能够共享的变量(如全局变量),这样两个线程都能够访问和修改该变量,从而达到...

    基于区块链的线程间数据共享.pptx

    解决方案,研究报告,行业报告

    针对于Executor框架,Java API,线程共享数据

    - **使用锁和条件变量**:锁机制是解决多线程数据共享问题的一种常见手段。Java提供了多种锁的实现方式,包括synchronized关键字、ReentrantLock等。同时,条件变量(Condition)的使用可以帮助线程进行等待和唤醒...

    易语言线程返回数据的方法

    3. **共享数据结构**:线程可以将结果存入一个共享数据结构(如数组或链表),然后通过同步机制(如锁)通知其他线程数据已准备好。 4. **使用线程句柄**:易语言允许通过线程句柄发送消息,线程执行完毕后,可以...

    线程间通信方式3:消息传递方式

    - 在多线程环境中,数据共享是需要特别注意的问题。消息传递可以作为避免数据竞争的一种手段,因为每个线程通过消息队列顺序地接收和处理消息,而不是直接访问共享数据。 - 但需要注意的是,如果消息涉及到共享...

    NET中多线程间资源共享与访问

    ### .NET中多线程间资源共享与访问 #### 概述 在.NET环境中,多线程编程是一项重要的技能,尤其当涉及到并发访问共享资源时。本文档深入探讨了.NET平台上的多线程资源共享与访问机制,并详细介绍了一个自定义类`...

    JAVA 多线程的两点误区

    ### JAVA多线程的两点误区 #### 一、线程启动与执行状态的理解误区 ...正确理解线程的启动与执行状态、掌握线程间的数据共享与同步机制是非常关键的。希望以上内容能够帮助大家更好地理解和应用Java多线程技术。

    linux多线程间使用共享内存例程,C++版本。

    linux多线程间使用共享内存例程,C++版本。可用于大量数据的多线程共享。

    C#线程间操作无效Study

    4. 避免共享状态:尽可能减少多线程间的共享数据,如果必须共享,确保使用锁(Lock)或其他同步机制。 5. 使用`System.Threading.Tasks.TaskScheduler`自定义调度器:在特定情况下,可以创建自己的任务调度器来控制...

    MFC线程间通信

    这种方式避免了直接的数据共享,更安全,但需要设计消息处理机制,增加了代码复杂性。 参数传递方式通常在创建新线程时使用。通过CWinThread类的AfxBeginThread函数,可以将参数传递给新线程的入口点函数,从而实现...

    Windows 2000线程间通信

    文件映射是另一种线程间通信方式,它允许线程将内存区域与文件关联,使得多个线程可以直接访问同一内存空间,实现高效的数据共享。`CreateFileMapping()` API用于创建文件映射对象,而`MapViewOfFile()`则用于将文件...

    linux c++ socket 多线程1

    "线程存储和共享内存.pdf"会深入讲解线程间数据共享的方式,如全局变量、局部静态变量、线程局部存储(TLS)和共享内存。线程局部存储允许每个线程拥有独立的数据副本,而共享内存则让不同线程之间可以直接交换数据...

    多个线程之间共享数据的方式

    NULL 博文链接:https://903497571.iteye.com/blog/1869428

    java多线程设计模式

    - **线程局部变量模式**:ThreadLocal类,为每个线程提供独立的变量副本,避免线程间数据共享引发的问题。 7. **死锁**: - **死锁条件**:互斥、占有并等待、无剥夺和循环等待。 - **死锁预防与避免**:避免...

    java核心知识点学习----多线程间的数据共享和对象独立,ThreadLocal详解.pdf

    在Java中,有多种方式可以实现线程间的数据共享和对象独立,其中ThreadLocal是常用的工具之一。 在多线程环境下,共享数据通常会引发线程安全问题,比如上述例子中的“张三给李四转钱”场景,如果两个线程同时操作...

    Linux 学习资料(多线程,进程学习资料)

    每个.c文件很可能是实现不同线程功能或演示线程同步、通信的实例代码,比如线程创建、销毁、线程间数据共享、信号量、互斥锁等概念。通过分析这些代码,你可以理解如何在实际项目中使用多线程。 thread1.c到thread5...

    【面试资料】-(机构内训资料)Java多线程,高并发面试.zip

    5. **线程局部变量**:`ThreadLocal`类为每个线程提供独立的变量副本,避免线程间数据共享引发的问题。 6. **并发性能调优**:JVM内存模型、垃圾收集器、锁优化等都是高并发场景下需要关注的性能优化点。 7. **...

    线程的几种控制方式以及线程间的几种通信方式

    3. **线程同步**:为了避免多个线程同时访问共享资源导致数据不一致,引入了线程同步机制。主要包括Java的`synchronized`关键字、Python的`Lock`对象等。 4. **线程间通信**:线程间通信允许线程之间交换信息,Java...

    易语言线程返回数据的方法源码

    在多线程环境下,线程间的通信通常通过共享内存、信号量、消息队列等方式实现。在易语言中,由于其特性,我们可以使用“设置线程变量”和“获取线程变量”这两个命令来传递线程间的数据。下面是一个简单的例子,演示...

Global site tag (gtag.js) - Google Analytics