您的位置:首页 > 其它

5.并发工具和执行器(Concurrency Utilities and Executors)5.1 并发工具介绍

2017-10-14 17:00 239 查看

5.1并发工具介绍

        java简单的线程可以满足你去创建多线程的应用,相对单线程来说,java的简单线程的接口应用还是有一定的代表性的。可是那些简单的应用却有如下的问题:

        java的简单并发工具应用经常不能够被正确使用,如synchronized和wait()/notify()的工具。这些不正确的工具使用,或说早期的工具会用,将会导致线程间的竞争的现象中出现如下的问题:线程饥饿、死锁和其它的危险情况。这样的问题是很难被发现和打印出来的。

        太多依赖于synchronized关键字,将会导致性能问题,甚至影响到了可测试性。这些重要的问题将会在注重线程的系统中更为常见,像互联网的系统。

        开发者经常需要更高的线程应用,所就会自己构造线程池和信息间的调用。因为这些的构造并不会包含java的简单的线程接口提供。开发自己构造线程池和信息间的调用将面临的问题是耗时,和有时候难以控制的错误出现。

     为了去解决以上提到的问题,Java5构造了并发的工具,像线程池和阻塞队列,使用这些并发的工具可以走到高效和可扩展的效果。这个高性能的线程工具在如下的包中:

        java.util.concurrent:这个工具经常用在并发的应用中,如executor(执行器)。

        java.util.concurrent.atomic:这个工具类在单一的变量中,提供自由锁和线程安全的应用。

        java.util.concurrent.locks:这个工具的风格是提供等待(wait)和锁(lock)的状态。(一个对象让线程执行等待状态,直到它的状态被唤醒,那么它就可以执行了

相对于java的基础控制器——sychronization来说,这个工具会更加好表现和灵活。

对于这些并发工具来说,我们也要介绍一下nanoTime()的方法,这个方法属于java.lang.System的类中,它可以让你通过使用纳秒的粒度来相对测试程序和运行。

     并发工具可以分类为:executors、synchronizers、锁框架等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: