美文网首页
Java基础-多线程(2)

Java基础-多线程(2)

作者: 王子也寂寞 | 来源:发表于2017-06-21 16:37 被阅读0次

    一.JDK5以后的针对线程的锁定操作和释放操作.

    同步的弊端:

    A:效率低

    B:容易产生死锁

    二.死锁问题的描述

     两个或者两个以上的线程在争夺资源过程中,发生的一种互相等待的现象.

    三.生产者和消费者多线程的体现

    举例 :

               资源类;

               设置数据(生产者);

                获取数据(消费者);

    加锁:

                A:生产者和消费和都要加锁;

                B:必须是同一把锁;

    等待唤醒思路:

                A:生产者:

                         先看有没有数据,有就等待,没有就生产,生产完之后通知消费者来消费数据.

                 B:消费者:

                           先看有没有数据,有就消费,没有就等待,通知生产者生产.

    等待唤醒方法:

               wait();等待.

               notify();唤醒单个线程.

               notifyAll();唤醒所有线程.

               这些方法必须通过锁对象调用.

    四.线程组

    把多个线程放到一个组里.这样比较方法操作整个组的线程.

    代码举例:

    代码举例

    五.线程池

    线程池的好处:线程池里的每一个线程代码结束后,并不会死亡,而是再次回到线程池中成为空闲状态,等待下一个对象来使用.

    实现线程池的步骤:

                     A:创建一个线程池对象,控制需要创建几个线程对象.

                                     public static ExxcutorService newFixedThreadPool(int nThreads);

                     B:这种线程池的线程可以执行:

                                   Runnable对象或者Callable对象代表的线程

                                    做一个类实现Runnable接口.

                    C:调用如下方法即可.

                                   submit(Runnable task);

    代码举例:

    代码举例

    六.线程常见情况

    * A:新建--就绪--运行--死亡

    * B:新建--就绪--运行--就绪--运行--死亡

    * C:新建--就绪--运行--其他阻塞--就绪--运行--死亡

    * D:新建--就绪--运行--同步阻塞--就绪--运行--死亡

    * E:新建--就绪--运行--等待阻塞--同步阻塞阻塞--就绪--运行--死亡

    相关文章

      网友评论

          本文标题:Java基础-多线程(2)

          本文链接:https://www.haomeiwen.com/subject/riltcxtx.html