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

网站设计目的怎么写做高清视频的网站

网站设计目的怎么写,做高清视频的网站,怎么免费制作网页,大连建设工程信息网防水线程的同步和死锁 同步问题引出 当多个线程访问同一资源时,会出现不同步问题。比如当票贩子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.yayakq.cn/news/534606/

相关文章:

  • 做网站四百全包手机网站html源码下载
  • 响应网站和模板网站番禺是哪里
  • 做炫舞情侣头像动态图网站利用店铺网站做灰色优化
  • 营销型网站带来南京品牌网站建设
  • html做校园网站江油市建设局网站
  • 建设微网站株洲优化公司
  • 业务员自己做网站做网站都是用ps吗
  • 免费做网站可以一直用吗网站手机访问跳转
  • 大连网站建设-网龙科技个人网站如何在百度上做推广
  • 自贡移动网站建设杭州网站建设公司推荐
  • 鹤山市住房和城乡建设局网站网站界面 ui 设计答案
  • 手机网站制作套餐域名可以绑定网站吗
  • wordpress 调出编辑器怎么做网站的seo优化
  • 自适应网站建设都找全网天下做面料那几个网站
  • 罗湖网站建设联系电话襄阳网站建设楚翼网络
  • 假网站如何做网站建设立项申请
  • 网站关键词被改苏州关键词seo排名
  • 福田大型商城网站建设提示危险网站
  • 旅游网站建设相关报价表格wordpress如何转成app
  • 保定网站建设开发做一款app要多少钱
  • 墓园网站建设价格怎么制作网站生成图片
  • 可直接进入网站的代码网销具体怎么做网站
  • 企业网站的搭建流程网站导航是怎么做的
  • 重庆 机械有限公司 江北网站建设昆山网站建设昆山
  • 网站的形式网页开发工具的作用有多大
  • 深圳建站公司价格丰台做网站的公司
  • 餐饮网站建设的目的湟中网站建设
  • 网站开发答辩设计预期目标铁路工程造价信息网
  • 哪里有免费的网站模板下载 迅雷下载软件什么是网站挂马
  • 新郑建设局网站中国网站建设市场分析