zoukankan      html  css  js  c++  java
  • java多线程学习-4

    问:多线程之间通信方法有哪些?

    》wait(),notify(),notifyAll()。

    问:以上三个方法的使用场景、使用方法与注意事项有哪些?

    * 多个线程通信
     * wait(),notify(),notifyAll()
     *
     * wait(),当前线程立即进入阻塞状态,并释放同步监视器
     * notify(),一旦执行此方法,就会释放被wait的线程。如果多个,只唤醒优先级高的那个
     * notifyAll(),一旦执行此方法,就会释放所有被wait的线程
     *
     * 这三个方法只能放在同步代码块或同步方法中
     * 这三个方法必须是同步代码块或者同步方法中的同步监视器

    问:请解释一下sleep()和wai()两个方法的异同点?

    相同点

    都可以使当前线程立即处于阻塞状态 

    不同点:

    1、调用者不同。wait()是Object类中的方法,二sleep()是Thread中的方法

    2、调用时机不同:sleep没有限制,但是wait只能在synchronized同步代码块中调用【由同步监视器调用】。

    3、sleep()不会释放锁。wait()会释放锁。导致的结果就是:sleep容易抢占锁,发生死锁现象

    问:创建线程一共有哪几种方法?
    》四种:继承Thread,实现Runnable,实现Callable接口,线程池

    问:继承Callable这种方式创建线程相比较与继承Runnable,有什么优点?

    》1、call()方法有返回值,而run()方法没有返回值。有返回值便于线程间通信。

     2、call()方法可以抛出一个异常,run()方法没有

     3、Callable接口支持泛型

  • 相关阅读:
    java web 自定义的权限框架
    java web 中 读取windows图标并显示
    apache httpclient
    Gson json解析工具
    org.apache.commons
    ehcache 缓存管理工具
    springmvc集成Freemarke配置的几点
    SaltStack与ZeroMQ(二)
    Python中的__init__和__new__介绍
    TCP 介绍
  • 原文地址:https://www.cnblogs.com/yibao/p/13591962.html
Copyright © 2011-2022 走看看