多线程之线程同步的⽅法(7种)

多线程之线程同步的⽅法(7种)

多线程之线程同步的⽅法(7种)

同步的⽅法:

⼀、同步⽅法

即有关键字修饰的⽅法。由于java的每个对象都有⼀个内置锁,当⽤此关键字修饰⽅法时,内置锁会保护整个⽅法。在调⽤该⽅法前,需要获得内置锁,否则就处于阻塞状态。

注: 关键字也可以修饰静态⽅法,此时如果调⽤该静态⽅法,将会锁住整个类。

⼆、同步代码块

即有关键字修饰的语句块。被该关键字修饰的语句块会⾃动被加上内置锁,从⽽实现同步

代码如:

(){

注:同步是⼀种⾼开销的操作,因此应该尽量减少同步的内容。通常没有必要同步整个⽅法,使⽤代码块同步关键代码即可。

com.xhj.;

/**

* 线程同步的运⽤

* @

*/

class {

class Bank {

int = 100;

int () {

/**

* ⽤同步⽅法实现

* @param money

*/

java多线程数据同步

void save(int money) {

+= money;

/**

* ⽤同步代码块实现

* @param money

*/

void save1(int money) {

(this) {

+= money;

class {

Bank bank;

(Bank bank) {

this.bank = bank;

@

void run() {

for (int i = 0; i < 10; i++) {

// bank.save1(10);

bank.save(10);

.out.(i + “账户余额为:” + bank.());

/**

* 建⽴线程,调⽤内部类

*/

void () {

Bank bank = new Bank();

= new (bank);

.out.(“线程1”);

= new ();

.start();

.out.(“线程2”);

= new ();

.start();

java多线程数据同步

void main( args) {

st = new ();

st.();

=====================================

⽰例加讲解

同步是多线程中的重要概念。同步的使⽤可以保证在多线程运⾏的环境中,程序不会产⽣设计之外的错误结果。同步的实现⽅式有两种java多线程数据同步,同步⽅法和同步块,这两种⽅式都要⽤到关键字。

同步⽅法:给⼀个⽅法增加修饰符之后就可以使它成为同步⽅法,这个⽅法可以是静态⽅法和⾮静态⽅法,但是不能是抽象类的抽象⽅法,也不能是接⼝中的接⼝⽅法。下⾯代码是⼀个同步⽅法的⽰例:

void () {

// do

void () {

// do

线程在执⾏同步⽅法时是具有排它性的。当任意⼀个线程进⼊到⼀个对象的任意⼀个同步⽅法时,这个对象的所有同步⽅法都被锁定了,在此期间,其他任何线程都不能访问这个对象的任意⼀个同步⽅法,直到这个线程执⾏完它所调⽤的同步⽅法并从中退出,从⽽导致它释放了该对象的同步锁之后。在⼀个对象被某个线程锁定之后,其他线程是可以访问这个对象的所有⾮同步⽅法的。

同步块:同步块是通过锁定⼀个指定的对象,来对同步块中包含的代码进⾏同步;⽽同步⽅法是对这个⽅法块⾥的代码进⾏同步,⽽这种情况下锁定的对象就是同步⽅法所属的主体对象⾃⾝。如果这个⽅法是静态同步⽅法呢?那么线程锁定的就不是这个类的对象了多线程之线程同步的⽅法(7种),也不是这个类⾃⾝java多线程数据同步,⽽是这个类对应的java.lang.Class类型的对象。同步⽅法和同步块之间的相互制约只限于同⼀个对象之间多线程之线程同步的⽅法(7种),所以静态同步⽅法只受它所属类的其它静态同步⽅法的制约java多线程数据同步,⽽跟这个类的实例(对象)没有关系。

如果⼀个对象既有同步⽅法,⼜有同步块,那么当其中任意⼀个同步⽅法或者同步块被某个线程执⾏时,这个对象就被锁定了,其他线程⽆法在此时访问这个对象的同步⽅法,也不能执⾏同步块。

关键字⽤于保护共享数据。请⼤家注意“共享数据”,你⼀定要分清哪些数据是共享数据,请看下⾯的例⼦:

class {

void run(){

for(int i=0;i

公告:
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299

资源库 - 资源分享下载网 » 多线程之线程同步的⽅法(7种)

常见问题FAQ

关于资源售价和售后服务的说明?
本站所有资源的标价均为本站收集资源的辛苦费,不代表资源本身的价值。软件是高智慧高价值的商品,不可能是白菜价。本站资源标价只是赞助费用,收取的赞助费仅用来维持本站的日常运营!毕竟收集整理资料需要投入云计算资源和站长大量的精力。
代码有没有售后服务和技术支持?
由于代码的运行具有不可预见性,本站不保证代码完整可运行,不提供技术支持和售后服务。 本站原创代码都是站长自己开发的,可以有偿提供技术支持服务。 网站里标明【亲测】的代码都是站长亲测过的,其他的代码由于精力有限,没有一一测试,不能保证代码就一定能够使用,更没有技术支持服务,下载前请自行斟酌。
有没有搭建服务?
由于搭建服务比较费时费力,所以本站除了原创代码外均不提供搭建服务。本站分享代码纯属兴趣爱好,不以盈利为目的,请勿咨询有没有搭建服务,谢谢理解。
链接地址失效了怎么办?
请带上资源链接地址联系客服,工作时间内我们看到后将第一时间回复。
关于解压密码
本站资源一般都没有加密,如果发现需要解压密码的,那么就输入 hao.35dc.com 试试。

发表评论

资源库,由老程序员细心甄别、精心筛选,只为提供优质的源码资源

关于我们 联系我们