课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > Java并发包
  • Java并发包

    发布:昆明Java培训      来源:达内新闻      时间:2016-07-31

  • 1、synchronized的功能扩展:重入锁(ReentrantLock)

    重入锁性能要比synchronized好,控制力度比较小,而且使用起来也更灵活;

    重入锁线程在等待的时候可以被中断,而synchronized要么获得锁继续执行,要么保持等待;

    重入锁线程在等待的时候可以限时等待;

    重入锁提供了公平锁和非公平锁两种模式;

    2、Condition条件

    wait和notify方法和synchronized关键字合作使用,而condition是和重入锁合作使用通过lock.newCondition()方法可以生成一个与重入锁绑定的Condition对象;

    Condition提供了一些基本方法:

    await:是当期线程等待,并释放当前锁,当其他线程使用signal或者signalAll时,线程会重新获得锁并继续执行;

    awaitUninterruptibly与await基本相同,但它不会再等待过程中响应中断;

    signal唤醒一个线程

    signalAll方法唤醒所有等待线程;

    3、Semaphore信号量:允许多个线程同时访问

    acquire申请许可,若无法获得,则线程等待直到有一个线城释放许可或当前线程被中断;

    acquireUninterruptibly和acquire类似,不过不响应中断;

    release释放许可

    4、ReadWriteLock读写锁

    读写分离锁,如果使用synchronized或者可重入锁,线程的所有读之间,读与写之间,写与写之间都是串行操作,但读与度之不会造成数据的破坏,这也就是读写锁所做的事情;

    5、倒计时器CountDownLatch

    6、循环 栅栏CyclicBarrier

    7、线程池

    Executor提供了各种各样的线程池:

    newFixedThreadPool:固定数量线程的线程池,当任务超出线程数量时,暂存在阻塞队列中;

    newSingleExecutor:返回一个只有一个线程的线程池,多于一个任务的话,保存在阻塞队列中;

    newCachedThreadPool:返回一个可根据实际情况调整线程数量的线程池,但是可以设置线程池的最大线程数量,线程存活时间等;

    newSingleThreadScheduleExecutor:返回一个ScheduledExecutorService对象,线程池大小为1,有定时执行任务的功能;

    newScheduleThreadPool:返回一个ScheduledExecutorService对象,但线程池的线程数量可以指定;

    当线程池超过负载的时候(线程池用完,等待队列用完啊),jdk有几种内置的策略:

    AbortPolicy:直接抛出异常,阻止系统正常工作

    CallerRunsPolicy:只要线程池未关闭,直接在线程池中运行该任务

    DiscardOledestPolicy:丢弃一个最老的请求

    DiscardPolicy:直接丢弃,不与任何处理;

    8、Fork/Join框架:分而治之

    类似于分治思想,Fork阶段用来把任务分割成多个子任务,Join阶段用来收集结果

    推荐文章

上一篇:Java并行基础

下一篇:锁的优化及注意事项

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56