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

企业网站 制作珠宝网站策划

企业网站 制作,珠宝网站策划,创意装饰公司,公司如何做网络推广线程的同步和死锁 同步问题引出 当多个线程访问同一资源时#xff0c;会出现不同步问题。比如当票贩子A#xff08;线程A#xff09;已经通过了“判断”#xff0c;但由于网络延迟#xff0c;暂未修改票数的间隔时间内#xff0c;票贩子B#xff08;线程B#xff09;…线程的同步和死锁 同步问题引出 当多个线程访问同一资源时会出现不同步问题。比如当票贩子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.zqtcl.cn/news/710564/

相关文章:

  • 网站开发数据库连接失败广州网站建站平台
  • 鄂尔多斯北京网站建设加盟网站建设的内容
  • 网站 被 抄袭不属于营销型网站的特点
  • 浙江英文网站建设互联网公司排名2021完整版
  • 完美代码的网站python开发工具
  • 餐饮网站开发参考文献网站建设500错误代码
  • 网站开发关键技术网站自动推广软件免费
  • 前端学习网站南阳东莞网站建设公司哪家好
  • 关于做网站的了解点wordpress小程序插曲
  • PHP网站开发与管理设计心得个人可以做聊天网站备案吗
  • 开公司可以在哪些网站做推广上海画册设计
  • 成都高新区规划建设局网站网络营销方式有哪些?举例说明
  • 国家企业信用公信系统入口seo服务
  • 个人网站网页模板室内装修设计自学软件
  • 什么网站可以做告白的网页网站模板套用湖南岚鸿
  • 膜结构网站推广怎么做怎样把网站上传到空间
  • 三维网站是怎么做的商城网站 运营
  • 程序员网站开发框架无锡网络公司网站建设app微信公众号平
  • 中关村网站建设网络营销策划书范文
  • 电商网站建设与课程设计科技网站模版
  • 建设部网站资质漳州最专业的网站建设公司
  • 网站建设需求和页面需求怎么提一个静态网站怎么做
  • 宝塔wordpress广州网站营销seo
  • 甘肃城乡建设厅网站首页发布公司信息的网站
  • 工信部网站备案查询 手机凡科网微信小程序制作
  • 一站多通怎么做网站网站推广工具 刷链接
  • 学生做网站的工作室网络舆情监测与研判考试重点
  • 做网站去哪个公司好广告创意设计论文
  • 20m带宽做网站够用吗win7创建wordpress
  • qq音乐怎么做mp3下载网站发卡网站建设方案