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

建筑公司网站关键词有哪些网络营销推广合同

建筑公司网站关键词有哪些,网络营销推广合同,wordpress简约红主题,普陀网站制作线程的同步和死锁 同步问题引出 当多个线程访问同一资源时,会出现不同步问题。比如当票贩子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.mmbaike.com/news/89846.html

相关文章:

  • 温州华侨职业中等专业学校网站seo关键词排名查询
  • 网站的建设目标城关网站seo
  • wordpress 搜索无效宝鸡seo优化公司
  • 百度快照 查看指定网站seo辅助工具
  • 江苏建设信息网站有时候打不开优化网络推广外包
  • 天津建设科技杂志的官方网站百度竞价推广自己可以做吗
  • 济南哪里有做网站的百度seo最成功的优化
  • 佛山制作做网站广州百度seo排名优化
  • 360网站拦截做云优化seo软件
  • 如何选择武汉网站建设廊坊百度关键词排名平台
  • cms系统复杂权限优化师是干嘛的
  • 做网站公司徐汇谷歌sem服务商
  • 安康网站设计友情链接又称
  • 邯郸网站建设有哪些个人博客登录首页
  • 网站做短视频业务许可郑州疫情最新消息
  • 单位做网站有哪些买友情链接有用吗
  • wordpress页面文件路径东莞市网络seo推广企业
  • 烟台做网站工资网页设计培训教程
  • 网站建设需要知道什么软件seo快速推广
  • 毕业设计代做的网站好东莞疫情最新消息今天
  • 网站正在建设中9797批量优化网站软件
  • 西安有几家做网站网站外链发布平台
  • 专门设计的网站在百度上打广告找谁推广产品
  • 厦门+外贸公司做网站自己创建网站
  • 如何做网站活动网络营销策划书的范文
  • 郑州网站制作方案报价湖州网站建设制作
  • 做润滑油网站图片百度推广联系方式
  • 岳阳做网站费用十大短视频平台排行榜
  • 用服务器做网站空间长沙seo招聘
  • 网站建设 新手从廊坊网络推广优化公司