Java线程同步锁解决共享数据安全
2011-03-31 01:20
465 查看
Java线程同步锁就帮助我们处置了这个难缠的问题。 下面我们就来学些有关着房门的问题, 我们可以在计算机上运转各种计算机软件程序。 线程(Thread)是一份独立运转的程序, 有自己专用的运转栈。 比如, 数据库等。 我们需求引入线程“同步”机制, 即各位线程之间要有个先来后到, 不能一窝蜂挤上去抢作一团。 我也不明白为什么要用这个很容易惹起误解的词。 咱们也就只好这么将就。 Java线程同步锁的真实意思和字面意思恰恰相反。 线程同步的真实意思, 一个一个对共享资源进行操作, 而不是同时进行操作。 关于线程同步, 需求牢牢记住的第一点是:线程同步就是线程排队。 同步就是排队。 线程同步的目的就是防止线程“同步”执行。 关于线程同步, 只要共享资源的读写访问才需求同步。 假设不是共享资源, 那么就根本没有同步的必要。 关于线程同步, 需求牢牢记住的第三点是, 假设共享的资源是固定不变的, 那么就相当于“常量”, 线程同时读取常量也不需求同步。 至多一个Java线程同步锁修改共享资源, 也有能够是不同的代码;无论能否执行同一份代码, 只要这些线程的代码访问同一份可变的共享资源, 为了加深了解, 他们的工作内容是相反的, 都是遵照如下的步骤: (1)到市场上去, 这两团体的工作内容虽然一样, 但是他们绝对不会购买到同一件样品, 他们之间没有任何共享资源。 所以, 他们可以各自进行自己的工作, 互不干扰。 布置自己的工作方案。 这两个推销员有能够同时走到公告栏的前面, 同时观看公告栏上的信息。 这一点问题都没有。 因为公告栏是只读的, 也走到了公告栏前面, 两个推销员这个时候, 恰恰也到了。 这两个推销员就必须等候行政人员完成修改之后, 才干观看修改后的信息。 假设行政人员抵达的时候, 两个推销员曾经在观看公告栏了。 才干够写上新的信息。 上述这两种状况, 行政人员和推销员对公告栏的访问就需求进行同步。 而且我们可以看到, 行政人员的工作流程和推销员的工作流程(执行代码)完全不同, 所以他们之间需求同步。 下面我们就来看如何才干线程同步。 线程同步的基本实现思路还是比拟容易了解的。 我们可以给共享资源加一把锁, 哪个线程获取了这把钥匙, 才有权利访问该共享资源。 生活中, 我们也能够会遇到这样的例子。 每个储物箱都有一把锁, 人们可以运用那些带有钥匙的储物箱, 把储物箱锁上, 然后把钥匙拿走。 其别人不能再访问这个储物箱。 (当然, 真实的储物箱钥匙是可以被人拿走复制的, 所以不要把宝贵物品放在超市的储物箱外面。 于是很多超市都采用了电子密码锁。 ) Java线程同步锁这个模型看起来很直观。
相关文章推荐
- Java线程同步锁解决共享数据安全
- Java线程同步锁解决共享数据安全
- java项目——java中线程共享数据同步解决办法
- Java笔记1 : 在生产者消费者模式中,线程通信与共享数据,死锁问题与解决办法
- java中同步synchronized的意义,如何用它解决线程不安全的问题
- 线程安全与共享数据同步
- java,线程操作,同步访问共享的可变数据
- JAVA笔记14__多线程共享数据(同步)/ 线程死锁 / 生产者与消费者应用案例 / 线程池
- java线程的同步安全问题三种解决办法
- [Java]Java多线程数据安全(同步线程的方法)
- 浅谈利用同步机制解决Java中的线程安全问题
- 使用HTML5 跨域共享特性解决AJAX跨域数据同步问题
- Java基础——多个线程共享数据
- 线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用,不过要注意的是线程间需要做好同步。
- Java不同线程之间实现数据共享
- Java基础之线程安全基本数据类型
- 在一个程序中需要用到全局变量(在多个class之间共享数据),请问如何定义具有这种功能的变量?或者是否有其他的方法解决多个class之间的数据共享(尽量简单实现)。 首先应该明确 Java中没有全局变
- Java并发:线程安全的容器:同步和并发
- Java多个线程之间处理共享数据的方式
- 【java并发】多个线程间共享数据