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

比如做百度知道 .html,这些都是我们不可控制的网站!一网网站制作平台

比如做百度知道 .html,这些都是我们不可控制的网站!,一网网站制作平台,公司要我做网站_没有公司的材料是不是不可以做,微信里面的小程序今天小编继续来分享下多线程中的一些内容。 在多线程环境下#xff0c;由于线程调度的不确定性#xff0c;所以我们有时候无法很好的去保证其线程的执行顺序。 但是呢#xff0c;我们又要实现这个顺序执行#xff0c;所以我们可以使用到这两个方法#xff0c;wait 和 no…今天小编继续来分享下多线程中的一些内容。 在多线程环境下由于线程调度的不确定性所以我们有时候无法很好的去保证其线程的执行顺序。 但是呢我们又要实现这个顺序执行所以我们可以使用到这两个方法wait 和 notify 当然这两个方法是要在锁内部进行调用的。 那wait 和 notify 方法是什么呢 wait  是使当前执行代码的线程进行等待。它还具有另一个带参数的版本waitlong timeout 这里的等待会放进一个等待队列中。 然后接着会释放当前代码锁的资源 当满足一定的条件过后它会被唤醒重新去获取锁。 那这里的条件呢有这些 1.其他线程进行notify 2.当带参数的版本中时间超出了long timeout也会被唤醒 3.其他线程中调用本线程的interrupted方法导致了wait抛出InterruptedException异常 notify 这个方法是唤醒等待的线程。 这里要值得注意的是 1.notify需要在同步方法或者同步块中使用因为该方法是去通知可能等待该对象的对象锁的其他线程并使它们重新获取锁资源。 同步方法是指synchronized关键字修饰的方法。 同步块 synchronized锁{ } 2.如若是多个线程进行等待那么此时唤醒线程也是随机的没有所谓的“先来后到之说” 3.notify方法执行完后不会立即释放当前锁资源而是还会等到同步方法或者同步块执行完。 那来看看这个例子是如何搭配一起使用的吧 public static void main(String[] args) throws InterruptedException {Object objnew Object();Thread tnew Thread(()-{synchronized (obj){System.out.println(notify之前);obj.notify();System.out.println(notify之后);}});System.out.println(wait之前);synchronized(obj){t.start();obj.wait();}System.out.println(wait之后);} 代码结果如下 wait之前 notify之前 notify之后 wait之后 ok再次引入一个例子加深对其的了解吧 比如我现在要按顺序打印A、B、C 那么我们该如何做呢 我们可以创建三个线程两个锁 A线程打印AB线程中等待C等待B线程 打印完A那就唤醒B线程 打印完B线程然后去唤醒C线程。 代码如下 public class Demo21 {public static Object lockernew Object();public static Object locker2new Object();public static void main(String[] args) throws InterruptedException {Thread Anew Thread(()-{System.out.println(A);try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeException(e);}synchronized (locker){locker.notify();}});Thread Bnew Thread(()-{synchronized (locker){try {locker.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(B);}synchronized (locker2){locker2.notify();}});Thread Cnew Thread(()-{synchronized (locker2){try {locker2.wait();} catch (InterruptedException e) {throw new RuntimeException(e);}System.out.println(C);}});A.start();B.start();C.start();} } 那么除了这个notify还有一个notifyAll 那么这个notifyAll又是什么呢 notifyAll notifyAll方法可以一次性唤醒所有的线程等待。 这里值得注意的是notifyAll多次调用是没有问题不会出现报错 还有这个是需要同一把锁才能全部唤醒 唤醒后所有线程需要重新获取锁获取锁的过程是系统决定依然是具有不确定性。 ok那么小编就先分享到这里吧。
http://www.pierceye.com/news/737027/

相关文章:

  • 手机网站静态动态wordpress注意
  • 什么网站没人做v5shop微分销系统
  • 做鞋子的网站品牌vi设计包括哪些
  • 做产品类的工作上什么网站好asp.net做的网站模板下载
  • 金融公司网站规划方案我司网站改版上线网站建设
  • 城乡与住房建设部网站首页深圳响应式设计企业网站
  • 做网站 带宽 多少钱做电影网站的服务器需要多大
  • 西安网站建设全包用手机制作游戏的软件
  • 哪个网站生鲜配送做的好drupal wordpress网站
  • 网站后台需要多少建设部举报网站
  • 重庆建筑证书查询网站wordpress博客怎么访问不了
  • 网站案例鉴赏wordpress html5视频
  • 免费申请网站 主机 空间网站不稳定
  • 建立个人网站视频教程中国空间站和国际空间站对比
  • 佛山网站seo推广推荐一个专门做海鲜的网站
  • 长春网站建设与健网站外链如何做
  • 网站开发国内现状网站建设与维护教学计划
  • 如何解决网站图片打开慢网站如何做跳转
  • 网站开发作用大学生网络营销策划书
  • 有域名了如何建网站用自己的身份做网站备案
  • 免费的黄冈网站有哪些平台游戏软件上海网站建设自学
  • 网站建设摊销几年wordpress怎样建立二级菜单
  • 营销方案案例北京搜索引擎优化seo专员
  • 网站建设是什么科目wordpress 火车头
  • 做网站需要什么专业方向的员工wordpress yeti
  • 网站建设项目登记表长沙建网站培训机构
  • 拖拽建站平台福州小学网站建设
  • 网站定制套餐建设企业网站需要注意的问题
  • 织梦贷款网站源码网页开发工具
  • 乐清官方网站建筑公司企业号