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

建筑公司网站关键词有哪些淘宝关键词怎么选取

建筑公司网站关键词有哪些,淘宝关键词怎么选取,做音乐网站赚钱吗,帝国cms 网站名称线程的同步和死锁 同步问题引出 当多个线程访问同一资源时,会出现不同步问题。比如当票贩子A(线程A)已经通过了“判断”,但由于网络延迟,暂未修改票数的间隔时间内,票贩子B(线程B)…

线程的同步和死锁

同步问题引出

当多个线程访问同一资源时,会出现不同步问题。比如当票贩子A(线程A)已经通过了“判断”,但由于网络延迟,暂未修改票数的间隔时间内,票贩子B(线程B)也通过了“判断”。此时,若票数只剩下了最后一张,则会出现两个线程同时通过判断并最终会修改票数,出现错误(票数为0或-1)。
在这里插入图片描述

线程同步处理

解决同步问题的关键是锁,指的是当某一个线程执行操作的时候,其它线程外面等待。
在这里插入图片描述

现这把锁的功能,就可以使用 synchronized 关键字来实现,利用此关键字可以定义同步方法或同步代码块, 在同步代码块的操作里面的代码只允许一个线程执行。

1. 同步代码块

synchronized(同步对象){同步代码操作;
}

一般要进行同步对象处理的时候可以采用当前对象 this 进行同步。
卖票范例(同步代码块版):

class MyThread implements Runnable { // 线程的主体类private int ticket = 5;@Overridepublic void run() { // 线程的主体方法while(true) {synchronized(this) { // 每一次只允许一个线程进行访问if (this.ticket > 0) {try {Thread.sleep(100);  // 模拟网络延迟} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "买票,ticket = " + this.ticket --);				} else { System.out.println("-----票已售完-----");break;}}}}
}
public class ThreadDemo {public static void main(String[] args) {MyThread mt = new MyThread();new Thread(mt,"票贩子A").start(); new Thread(mt,"票贩子B").start(); new Thread(mt,"票贩子C").start(); }
}

结果:

票贩子A买票,ticket = 5
票贩子C买票,ticket = 4
票贩子C买票,ticket = 3
票贩子C买票,ticket = 2
票贩子B买票,ticket = 1
-----票已售完-----
-----票已售完-----
-----票已售完-----

加入同步处理之后,程序的整体的性能下降了。同步实际上会造成性能的降低。

2. 同步方法

只需要在方法定义上使用synchronized 关键字即可。

class MyThread implements Runnable { // 线程的主体类private int ticket = 5;public synchronized boolean sale() { // 每一次只允许一个线程进行访问该方法if (this.ticket > 0) {try {Thread.sleep(100);  // 模拟网络延迟} catch (InterruptedException e) {e.printStackTrace();}System.out.println(Thread.currentThread().getName() + "买票,ticket = " + this.ticket --);return true;} else { System.out.println("-----票已售完-----");return false;}}@Overridepublic void run() {while(this.sale()) {}}
}
public class ThreadDemo {public static void main(String[] args) {MyThread mt = new MyThread();new Thread(mt,"票贩子A").start(); new Thread(mt,"票贩子B").start(); new Thread(mt,"票贩子C").start(); }
}

结果:

票贩子A买票,ticket = 5
票贩子A买票,ticket = 4
票贩子A买票,ticket = 3
票贩子C买票,ticket = 2
票贩子C买票,ticket = 1
-----票已售完-----
-----票已售完-----
-----票已售完-----

在日后学习 Java 类库的时候会发现,系统中许多的类上使用的同步处理采用的都是同步方法。

线程死锁

死锁是在进行多线程同步的处理之中有可能产生的一种问题,所谓的死锁指的是若干个线程彼此互相等待的状态。
若干个线程访问同一资源时一定要进行同步处理,而过多的同步会造成死锁。

http://www.ds6.com.cn/news/60486.html

相关文章:

  • 南宁网站设计公司武汉seo和网络推广
  • 宠物店网站建设计划书免费公司网址怎么注册
  • 做科研交流常用的网站惠州搜索引擎seo
  • wordpress外卖seo搜索排名影响因素主要有
  • 有没有电脑做兼职的网站吗汕头网站建设
  • 施工企业质量管理应遵循的原则天津百度网站快速优化
  • 桂平网站建设网站推广优化外包公司
  • 网站开发 加密保护谷歌优化的网络公司
  • 外国人的做视频网站吗深圳网站设计专业乐云seo
  • 怎样做百度网站怎么创建网站?
  • 门户网站免费奖励自己网站优化流程
  • 维护网站成本百度用户服务中心电话
  • 福州网站建设好的公司手机百度一下
  • 男做变态手术视频网站合肥seo网站排名
  • 北京建站优化公司搜索指数查询
  • 苏州餐饮 网站建设刷排名seo软件
  • 网站建设公司net2006网络seo优化公司
  • 广东网站建设公司沈阳百度推广优化
  • 在安阳想建个网站怎么做网站seo优化公司
  • 陕西省西安市制作网站今天的最新新闻内容
  • 常见的网站开发语言免费推广公司的网站
  • 一个主机可以放几个网站电销名单渠道在哪里找
  • web前端培训十大坑爹优化关键词的方法
  • 网站建设需求说明书免费建立一个网站
  • 昆明网站建设一条龙服务seo整合营销
  • 北京专业做网站公司seo店铺描述
  • html5可以做网站吗seo关键词教程
  • 做网站后台要学购买网站域名
  • 网站建设的客户需求分析调研表网络营销与直播电商专业学什么
  • 织梦网站模板修改网站推广与优化平台