java 多线程一些知识点

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

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

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

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方法而使线程猝死。

猜你喜欢

转载自www.cnblogs.com/liufei1983/p/10925083.html