..


赞助商链接

在Java管理共享数据

书面文章达米亚诺Verda
第1 2

我们可以认为像任何其他的信息处理,以接触到更多的各方共享数据的任务。 想象一下,例如, 存储数字值,表示欧元/美元。 我们有一个计划,定期检查什么汇率,并更新该变量的值。 一个或多个其他程序,但是,将使用更新的信息来操作汇率换算价格。

请注意如何管理一个共享的,即使在这个简单的例子,需要特别注意。 想象一下,例如,当一个应用程序需要读取汇率转换,也被另一个程序,请求改变汇率本身收到。

哪个先执行? 其中汇率转换呢? 这个问题,甚至在某些情况下稍微复杂一点,可能更严重。

试想事实,不感兴趣的变量是小学,但是,例如, 一组数据组成 它现在可能只执行部分写入,然后由从阅读写作完成之后。 该交易将随后进行了更改的只是部分价值观,从而引发无意义的结果,因此不能接受的。

鉴于这一问题的许多编程语言提供的共享变量管理的具体工具类的存在 特别是我们研究下面的问题类别,因为这是 Java编程语言,最全利用一人处理。

你首先需要了解我们如何能够确保只有一个程序一次,或者更精确地在同一时间只有一个线程 (一个线程是一个程序或程序的基本组成部分,换句话说,一个程序可以包含多个线程,同时运行)可以访问共享变量。 该机制,使我们能够提供这种保证被称为相互排斥。

相互排斥

想象一下,开发一个 (或一组数据方法的集合是有用的函数来处理数据本身)所谓Variabile_Condivisa结构如下:






公共类Variabile_Condivisa







 {



   



 euro_dollaro浮动;



   



 euro_sterlina浮动;





   



 Variabile_Condivisa()



  



 {



     



 euro_dollaro = 1;



     



 euro_sterlina = 1;



  



 }





   



 set_euro_dollaro无效(浮动e_d)= {euro_dollaro e_d;}



   



 set_euro_sterlina无效(浮动e_s)= {euro_sterlina e_s;}





   



 get_euro_dollaro浮动(){返回euro_dollaro;}



   



 get_euro_sterlina浮动(){返回euro_sterlina;}







 }



这两个语句,并euro_dollaro euro_sterlina,代表汇率欧元/美元和欧元/英镑,而我们希望在多个程序之间共享信息(或在多个线程)。 开发的方法让你分配给这些数据值(和set_euro_dollaro set_euro_sterlina)和读取这些值(和get_euro_dollaro get_euro_sterlina)。

然后,我们找出一个特定的方法(Variabile_Condivisa),这就是所谓的类的构造函数被执行,而且每个Variabile_Condivisa创作在这种情况下,通过设置变量和euro_dollaro euro_sterlina的值设置为1。

然后,我们建立我们的程序对象类型的名为VAR Variabile_Condivisa(类代表一个具有共同特征的实体集,而一个对象表示此设置特定的元素,它可以在程序中引用)是这样的:






 Variabile_Condivisa Variabile_Condivisa VAR =新();



正如我们现在可以保证有在共享数据管理VAR没有问题? Java语言提供的关键字(或关键字)同步,它接受任何对象作为参数。 通过同步,可以定义,如示例所示,代码块:





同步(VAR)







 {



  



 / /同步的代码分隔块(VAR)

  





 }



在执行中的同步块的指示,任何线程获得对变量var ,或阻止所有进一步访问同一代码块,直到释放,或直至运行后整个块例如,通过代码分隔大括号。

换句话说,第一个线程(我们想象调用第一个),执行同步语句(VAR)实际上创建了一个屏障,阻止其他线程执行,直到第一个同步的声明(VAR)尚未完成在划定的代码块同步执行。 在这些区块,然后插入指令读取或写入共享数据。

这样可以保证相互排斥,从而确保一次只能有一个线程可以访问共享变量。 应该指出的是,有必要认真选择的对象作为参数传递给同步。 它必须是一个对象共同所有的线程要在其中创建一个互斥机制,例如,在这种情况下,变量要阅读或编辑。

试想一下,在这一点上,你要设置的程序,使线程要读取的变量var被搁置的价值和评估后,才第一次更新后他们的请求的结果。 想象一下,你要定义一个阅读和写作之间的同步机制。

在同一类...
电子学习
Linux操作系统(课程) Linux操作系统(课程)
完整指南开源系统。 从49€。
PHP(课程) PHP(课程)
全部课程用于创建动态Web站点。 从49€。
Ruby和Ruby on Rails的(课程) Ruby和Ruby on Rails的(课程)
创建Ruby和RoR的软件和Web应用程序。 从39€。
赞助商链接