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

文登住房和建设局网站怎么进行seo

文登住房和建设局网站,怎么进行seo,怎么免费搭建一个网站,上海广告公司招聘信息一、wait & notify wait能让线程进入waiting状态,这时候就需要比较一下和sleep的区别了。 sleep vs wait 1) sleep 是 Thread 方法,而 wait 是 Object 的方法 2) sleep 不需要强制和 synchronized 配合使用,但 wait 强制和 s…

一、wait & notify

wait能让线程进入waiting状态,这时候就需要比较一下和sleep的区别了。

sleep vs wait        

1) sleep 是 Thread 方法,而 wait 是 Object 的方法

2) sleep 不需要强制和 synchronized 配合使用,但 wait 强制和 synchronized 一起用

3) sleep 时不会释放对象锁,但 wait 在等待的时候会释放对象锁

4) 它们在java中的状态不同 sleep是 TIMED_WAITING, wait是 WAITING

正确套路写法:

wait和notify搭配使用,一个线程需要满足条件时工作,一个线程负责提供条件后唤醒。

    synchronized (lock){while (条件不成立){lock.wait();}//条件成立,开始工作}//另一个线程synchronized (lock){lock.notifyAll();}

二、案例——保护式暂停 Guarded Suspension

        有一个结果需要从一个线程传递到另一个线程,让他们关联同一个 GuardedObject

        GuradObject类,提供get和product方法,按照wait和notify的套路写法即可。

        然后主线程创建一个实例对象(锁对象),用两个线程模拟的过程。

@Slf4j(topic = "c.test")
public class Guard {public static void main(String[] args) {GuardObject guardObject = new GuardObject();new Thread(() -> {log.debug("等待结果");Object o = guardObject.get();log.debug("结果:{}", o);}, "t1").start();new Thread(()->{log.debug("输出结果");try {Thread.sleep(2000);} catch (InterruptedException e) {e.printStackTrace();}guardObject.product(10);}, "t2").start();}
}class GuardObject{private Object response;public synchronized Object get(){while(response == null){try {this.wait();} catch (InterruptedException e) {e.printStackTrace();}}return response;}public synchronized void product(Object response){this.response = response;this.notifyAll();}
}

2s以后,输出结果

三、超时优化

        可以改进一下GuardObject的方法,不要让t1一直空等,如果等了超过一定时间,那么就不等了。

        我们给get传个参数,作为最大等待时间timeoutbegin作为最初时间duration记录经历时间waitTime还需要等待的时间

class GuardObject{private Object response;public synchronized Object get(long timeout){long begin = System.currentTimeMillis();long duration = 0;while(response == null){long waitTime = timeout-duration;if(duration > timeout){break;}try {this.wait(waitTime);} catch (InterruptedException e) {e.printStackTrace();}duration = System.currentTimeMillis() - begin;}return response;}public synchronized void product(Object response){this.response = response;this.notifyAll();}
}

2s可以返回结果,如果只等1s:

等3s:

四、join原理

        join的设计符合保护式暂停的设计模式。

    public final synchronized void join(long millis)throws InterruptedException {long base = System.currentTimeMillis();long now = 0;if (millis < 0) {throw new IllegalArgumentException("timeout value is negative");}if (millis == 0) {while (isAlive()) {wait(0);}} else {while (isAlive()) {long delay = millis - now;if (delay <= 0) {break;}wait(delay);now = System.currentTimeMillis() - base;}}}

可以看到案例中超时优化代码和这里逻辑相同。

如果millis==0,代表需要一直wait,直到isAlive为假,也就是线程结束。

http://www.dtcms.com/wzjs/437554.html

相关文章:

  • 上海交通大学毕业设计网站网络营销八大职能
  • 郑州手机端建站模板一键生成app制作器
  • 旅游网页网站开发的目的和意义关键词生成器
  • 电商网站开发计划书seo顾问什么职位
  • 做树状图的网站站长查询工具
  • 做空调管路网站交换链接的例子
  • 丽水哪里做网站品牌推广的作用
  • 展示类网站模板js引擎优化seo是什么
  • 检察院网站建设方案交换链接的其它叫法是
  • 电气营销型网站方案网络科技有限公司
  • 试述电子商务网站的建设流程东莞营销网站建设推广
  • 自己怎么做淘宝客网站百度地图人工电话
  • 如何建设阿里巴巴网站bt最佳磁力搜索引擎
  • 网站培训机构有哪些谷歌代理
  • 网站建设营销词atp最新排名
  • 内蒙古网站建设流程网络舆情分析报告模板
  • 网站建设与管理期中考2022最新热点事件及点评
  • 对网站建设有什么样好的建设意见上海推广网站
  • 成都便宜网站建设公司哪家好培训心得简短
  • 常州哪有做网站新闻最近的新闻
  • 高端网站开发秦帝怎样申请自己的电商平台
  • 购物网站建设款流程百度网络推广
  • 西安哪个公司可以做网站域名注册服务网站查询
  • 怎么做淘宝客网站推广雅虎搜索引擎首页
  • 西安建设工程交易中心网站广州:推动优化防控措施落
  • 无锡设计师网站兰州网络优化seo
  • 自己做电视视频网站吗百度关键词排名靠前
  • 怎么找网站url地址培训学校招生方案范文
  • 凡科网站建设完成下载下载器网络营销推广的方式
  • 西安百度网站快速优化百度关键词规划师工具