`
chen
  • 浏览: 11846 次
  • 性别: Icon_minigender_1
  • 来自: 大连
最近访客 更多访客>>
社区版块
存档分类
最新评论

访问共享的可变数据时要进行同步

阅读更多

同步的作用:

  •   提供互斥访问
  •   提供线程之间的可靠通信

大家看下面的代码:

 

public class StopThreadDemo {
	// no synchronize or volatile
	private static boolean shouldStop;

	public static void main(String[] args) throws InterruptedException {
		Thread firstThread = new Thread(new Runnable() {
			public void run() {
				int counter = 0;
				while (!shouldStop) {
					counter++;
					System.out.println(counter);
				}
			}
		});
		firstThread.start();
		TimeUnit.SECONDS.sleep(1);
		shouldStop = true;

	}

}

 在某些环境下后台线程(firstThread)并没有在运行一秒左右后正确的停止(某些环境下也能正常停止比如eclipse + jdk 1.6_16) 但是更加安全的做法是是用volitale或者同步shouldStop的读写 操作,只有这样我们才能保证firstThread 收到了should stop it !的请求。

 我们应该学习和考虑使用java currennt util package中已经提供的功能比如atomicLong .... etc 它能帮助我们写出更加安全的代码

 

分享到:
评论

相关推荐

    深入同步访问共享的可变数据分析

    本篇文章是对同步访问共享的可变数据进行了详细的分析介绍,需要的朋友参考下

    Delphi多个DLL共享全局数据Demo

    5. **线程同步**:当多个线程可能同时访问共享数据时,必须使用线程同步机制,如互斥量(Mutex)、信号量(Semaphore)或事件对象(Event),以防止数据竞争和不一致。 6. **导出和导入函数**:在DLL中,需要使用`...

    基于同步的数据共享实现方案概论.pdf

    本文将探讨基于数据同步的数据共享实现方案。 首先,我们来看一下分布式数据库的基本需求和思路。在分布式系统中,Web层、服务层以及数据存储层都是分布式设计,以提高系统的可扩展性和容错性。数据被按照高内聚...

    基于区块链的医疗数据共享模型研究.pdf

    患者、医生和研究人员在访问和共享医疗数据时存在严格的限制,这一过程需要花费大量的资源和时间用于权限审核和数据校验。 基于区块链的医疗数据共享模型可以解决这个问题。该模型使用区块链技术来实现医疗数据的...

    使用分布式文件系统实现数据同步.pdf

    6. 最后,用户可以使用DFS提供的单一访问点来访问网络中的共享文件夹,这样即便是在某台服务器发生故障时,DFS依然可以重定向请求到其他健康的服务器上,从而保证了用户访问数据的连续性和数据的安全性。 分布式...

    java 线程同步 信号量控制同步

    无论是否执行同一份代码,只要这些线程的代码访问同一份可变的共享资源,这些线程之间就需要同步。 线程同步机制可以通过使用锁来实现。锁可以是对象锁、类锁或同步锁。锁的作用是防止多个线程同时访问同一个共享...

    多数据源数据同步,数据接口

    在IT行业中,多数据源数据同步和数据接口是企业级应用开发中不可或缺的部分,尤其是在大数据时代,数据的整合、共享和实时更新变得至关重要。这里我们将深入探讨如何在Java Spring Boot框架下实现这些功能。 首先,...

    FTP数据同步工具.zip

    9. **易用性**:作为一款exe可执行文件,FTP数据同步工具很可能具有直观的用户界面,使得设置和管理FTP任务对非技术用户也友好。 在使用此工具时,用户需要确保拥有合适的FTP服务器访问权限,配置正确的服务器地址...

    多頁面共享sessionStorage並同步至vuex範例

    Vuex是Vue生态中的状态管理库,它提供了一个中心化的存储仓库,使得组件间的状态共享和管理变得更加有序和可控。 在这个"多頁面共享sessionStorage並同步至vuex範例"中,开发者可能使用了以下技术栈: 1. **Vuex**...

    .net的同步程序

    在多线程环境中,同步是指协调多个线程对共享资源的访问,避免数据竞争和不一致状态。在.NET中,有多种同步技术可供开发者使用,包括锁(Mutex, Monitor, Semaphore)、事件(EventWaitHandle)和条件变量(Monitor....

    多线程同步数据处理方法研究.pdf

    Monitor.Enter和Monitor.Exit方法用于进入和退出监视状态,确保在进入临界区(访问共享资源的代码段)时不会发生数据竞争。 2. **使用事件(Event)同步线程**:EventWaitHandle类提供了一种机制,让一个线程等待另...

    java线程同步详解

    3. **只有共享变量(可变状态)才需要同步,常量或不可变对象可以并发访问。** 4. **同步可以应用于方法或代码块,根据需求选择合适的同步策略。** 5. **Java提供了`synchronized`关键字以及更高级的并发工具来实现...

    基于共享基础数据的信息系统集成方案

    - 数据集成:通过中间件实现不同数据库之间的数据同步、迁移和转换。 - 应用集成:通过中间件技术将不同应用系统的功能或模块进行集成。 - 业务流程集成:实现不同业务流程之间的协调和自动化。 - 用户界面集成:...

    世界最好的同步工具

    在IT行业中,文件同步是至关重要的任务,它允许用户在不同的设备或存储位置之间保持数据的一致性,确保重要文件的备份和访问便利。同步工具能够帮助我们自动检测并更新两个或多个目录之间的差异,使它们保持一致。 ...

    RPC-DDSF:一种基于RPC的分布式数据共享框架.pdf

    在设计RPC-DDSF框架时,研究人员抽象了分布式数据共享应用的特征,并引入了配置文件,这使得框架在共享数据和数据共享规则上都具有可配置性。通过这种方式,开发者可以根据具体的应用需求调整共享数据和规则,从而使...

    用Python实现域用户与企业微信通讯录同步

    在IT领域,尤其是在企业信息化管理中,数据同步是至关重要的环节。本文将深入探讨如何使用Python编程语言来实现域用户与企业微信通讯录的同步,从而确保组织内部信息的准确性和一致性。 首先,我们需要理解“域”和...

    深入分析C# 线程同步

    首先,当多个线程可能同时访问共享数据时,线程同步就显得尤为重要。如果不进行同步,可能会导致数据的不一致性和错误,因为每个线程可能在不同的时间点修改相同的数据。因此,为了避免这种情况,开发者通常采用以下...

    操作系统--第七章进程同步

    进程同步主要关注的是如何确保多个进程在访问共享资源时能够按照一定的顺序执行,从而避免数据不一致性等问题的发生。例如,在上述示例中提到的生产者-消费者问题就是一个典型的需要进程同步的例子。在这个问题中,...

Global site tag (gtag.js) - Google Analytics