当前位置: 首页 > news >正文

网站可以免费看查询证书网站建设

网站可以免费看,查询证书网站建设,网站太花哨,一个内部网站如何做外网映射线程同步机制 在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。也可以这里理解:线程同步,即当有一个线程在对内存…

 线程同步机制

  1. 在多线程编程,一些敏感数据不允许被多个线程同时访问,此时就使用同步访问技术,保证数据在任何时刻,最多有一个线程访问,以保证数据的完整性。
  2. 也可以这里理解:线程同步,即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,其他线程才能对该内存地址进行操作。

互斥锁

  1. Java语言中,引入了对象互斥锁的概念,来保证共享数据操作的完整性。
  2. 每个对象都对应于一个可称为“互斥锁”的标记,这个标记用来保证在任一时刻,只能有一个线程访问该对象。
  3. 关键字 synchronized 来与对象的互斥锁联系。当某个对象用synchronized修饰时,表明该对象在任一时刻只能由一个线程访问
  4. 同步的局限性:导致程序的执行效率要降低
  5. 同步方法((非静态的)的锁可以是this,也可以是其他对象(要求是同一个对象);同步方法(静态的)的锁为当前类本身。

注意事项和细节

  1. 同步方法如果没有使用static修饰:默认锁对象为 this
  2. 如果方法使用static修饰,默认锁对象:当前类.class
  3. 实现的落地步骤:
    需要先分析上锁的代码,选择同步代码块或同步方法,要求多个线程的锁对象为同一个即可!

同步具体方法—synchronized

1、同步代码块
   synchronized(对象) { //得到对象的锁,才能操作同步代码
    //需要被同步代码;
  }
2、synchronized 还可以放在方法声明中,表示整个方法—为同步方法

     public synchronized void m (String name){
    //需要被同步的代码
  }

使用互斥锁—同步方法解决售票问题

/*** 使用多线程,模拟三个窗口同时售票 100张*/
public class SellTicket {public static void main(String[] args) {SellTicket03 sellTicket03 = new SellTicket03();new Thread(sellTicket03).start();//第一个线程new Thread(sellTicket03).start();//第二个线程new Thread(sellTicket03).start();//第三个线程}
}
//实现接口,使用synchronized实现线程同步
class SellTicket03 implements Runnable{private  int ticketNum = 100;private boolean loop =true;public synchronized void sell() {//同步方法,在同一时刻,只能有一个线程来执行run方法if (ticketNum <= 0){System.out.println("售票结束");loop=false;return;}//休眠50毫秒try {Thread.sleep(50);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("窗口 "+ Thread.currentThread().getName()+" 售出一张票"+" 剩余票数= "+(--ticketNum));}@Overridepublic  void run(){while (loop){sell();//sell方法是一个同步方法}}
}

使用互斥锁—同步代码块锁解决售票问题

/*** 使用多线程,模拟三个窗口同时售票 100张*/
public class SellTicket {public static void main(String[] args) {SellTicket03 sellTicket03 = new SellTicket03();new Thread(sellTicket03).start();//第一个线程new Thread(sellTicket03).start();//第二个线程new Thread(sellTicket03).start();//第三个线程}
}
//实现接口,使用synchronized实现线程同步
class SellTicket03 implements Runnable{private  int ticketNum = 100;private boolean loop =true;//1、public synchronized void sell()好就是一个同步方法,这时锁在this对象//2、也可以在代码块上写synchronize ,同步代码块,互斥锁还是在this对象public  void sell() {synchronized (this){if (ticketNum <= 0){System.out.println("售票结束");loop=false;return;}//休眠50毫秒try {Thread.sleep(50);} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println("窗口 "+ Thread.currentThread().getName()+" 售出一张票"+" 剩余票数= "+(--ticketNum));}}@Overridepublic  void run(){while (loop){sell();//sell方法是一个同步方法}}
}

静态同步方法的锁

class SellTicket03 implements Runnable{ //1、静态方法:public synchronized static void m1() {},锁是加在SellTicket03.class//2、如果在静态方法中,实现一个同步代码块。/*synchronized (SellTicket03.class) {System.out.println("m2");}*/public synchronized static void m1(){}public static void m2() {synchronized (SellTicket03.class) {System.out.println("m2");}}
}

http://www.yayakq.cn/news/979878/

相关文章:

  • 无锡网站制作无锡做网站中小型网站建设与管理设计总结
  • 怎样建设网站公司举报的网站是国外的域名和空间
  • 那个网站做推广好网站建设购买模板
  • 公司集团网站开发seo网站优化培训要多少钱
  • 做性的网站有哪些专业展馆展厅设计
  • 哪位大神推荐一下好网站网站开发项目策划书
  • 网站后台不能粘贴微网站怎么做
  • 网站代运营要多少费用建设一个网站需要几个角色
  • 一站式外贸服务平台速成网站-
  • 夸克建站系统源码下载外发加工网邀请码
  • 手机网站公司哪家好天翼云服务器
  • 成都专业的整站优化wordpress 多语言 站点
  • 宿迁网站建设制作更换网站域名之后
  • 台州网站制作策划asp做的网站后台怎么进去
  • 购买帝国cms做网站代理网站整体运营
  • 建设实验中心网站如何制作一个游戏app
  • 可以做代发货源的网站陇西哪里能学做网站
  • 建设信息网的网站或平台登陆开发网站公司有哪些
  • 杭州网站建设app河南省住房和城乡建设厅电话
  • 天津建设协会网站重庆忠县网站建设公司
  • 网站不备案做优化镇江网页
  • 连云港网站设计惠州仲恺住房和城乡建设局网站
  • 唐山建设网站建站六安城市网
  • 网站以个人名义备案淄博刚刚发布紧急通知
  • 做的比较炫的网站深圳网站制作公司售后
  • 建设路街道办事处门户网站wordpress 反爬虫
  • 做融资的网站有哪些织梦购物网站整站源码
  • 江苏威达建设有限公司网站网上营销方式和方法
  • 微网站建设的第一步彩票网站模版
  • 404错误页面放在网站的哪里网站建设需要什么方案