首页 > 编程语言 > 详细

java 多线程一些知识点

时间:2019-05-26 10:26:26      阅读:169      评论:0      收藏:0      [点我收藏+]

1:blocked线程和waiting的线程的区别? 如何唤醒?

   java线程中含有waiting与blocked两种状态:

   线程的 blocked状态往往是无法进入同步方法/代码块来完成的。这是因为无法获取到与同步方法/代码块相关联的锁。

        JAVA为提供了wait()和notifyAll以及notify()实现挂起线程,并且唤醒另外一个等待的线程。

  在JAVA虚拟机中,每个对象(Object和class)通过某种逻辑关联监视器,为了实现监视器的互斥功能,每个对象(Object和class)都关联着一个锁(有时也叫“互斥量”),这个锁在操作系统书籍中称为“信号量”,互斥(“mutex “)是一个二进制的信号量。

  我们知道JAVA每个对象(Object/class) 都关联一个监视器,更好的说法应该是每个对象(Object/class)都有一个监视器,对象可以有它自己的临界区,并且能够监视线程序列为了使线程协作,JAVA为提供了wait()和notifyAll以及notify()实现挂起线程,并且唤醒另外一个等待的线程。

  在java虚拟机中,每个对象和类在逻辑上都和一个监听器相关联。为了实现监听器的共同执行能力,锁(有时候又叫互斥量)关联着每个对象和类,在操作系统书上被称之为“信号量”,互斥量其实就是一个二态的信号量。

2: 为甚cocurrentMap效率高?

 

3: 原子类和synchronized 那个快

4 java  lock底层实现

5 多线程包

6 correntHashmap原理

7 lock synchronized 

8 同步方法 VS 同步代码块:

  java中,每一个对象都有一把锁,线程用synchronized获取对象上的锁。

  非静态同步方法:锁是类的对象的锁。

  静态同步方法:锁的是类本身。

  同步方法块:锁是可以选择的。所以能更加精确的控制。粒度更细致,可以更精确的控制对象锁。

9 确保N个线程可以访问N个资源而不死锁?

  指定资源获取顺序。所有线程都按照同样的顺序请求资源。

10 创建线程的方法:

  继承Thread

  实现Runnable接口:这种方式更受欢迎,因为可以继承其他的类。

  Executor框架创建线程池

 

11 线程的几种可用状态:

  new:刚创建的线程,但是没有调用start。

  就绪(Runnable):调用start, run()方法就执行,但是不一定马上执行。等待时间片。

  运行(Running) :得到CPU可以执行,正在执行。

  阻塞(waitting):正在运行到线程,暂时让出CPU。各种原因可以导致阻塞:

         sleep():调用一个在I/O上被阻塞的操作,即该操作在输入/输出完成前不会返回到调用者。

        等待锁。

  死亡:run() 方法正常退出,自然死亡。未捕获到异常终止了run方法而使线程猝死。

java 多线程一些知识点

原文:https://www.cnblogs.com/liufei1983/p/10925083.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!