zoukankan      html  css  js  c++  java
  • 多线程的杂篇

    thread的join方法是运行该方法的线程必须等到join方法的线程运行完毕才能让当前线程继续运行。原理是校验join线程是否存活,存活就一直循环等待,直到线程over了,才继续向下运行。
    volitile 是让线程间进行通讯的,解决了编译器的重排序,是程序按照正常的执行流程运行,

    jstat 命令监视虚拟机各种运行状态,包括垃圾收集,内存,类装载
    jstat -gc pid 可以监视堆的各个分区内存信息

    jstack :堆栈跟踪工具
    自定义类加载器 需要重写findclass()

    concurrenthashmap()的put操作是先进行hash找到分段,然后分段上加锁,在安全上和效率上是可以的。 并发情况下使用,不要使用hashmap
    concurrentLinkedQueue 线程安全的队列,它的性能好于blockingqueue

    java里的阻塞队列
    arrayBlockingQueue: 数组结构的有界阻塞队列
    linkedBlockingQueue: 链表结构组成的有界队列,linkedTransferQueue :一个由链表结构组成的无界阻塞队列,linkedBlockingDeque:链表组成的双向阻塞队列

    Fork/join 框架(多线程):
    目的是把一个大任务 进行拆分,每个子任务单独运行,任务在调用join方法获得该任务的结果,需要继承recursiveTask类,重写compute()方法
    线程间交换数据的exchanger 可以用来校验2个线程操作处理同样的数据后是否是一致的。

    控制并发线程数的semaphore:例如一条公路上只能有100辆车通行,其它的车只能在路口等待。

    CyclicBarrier 和 CountDownLatch的区别:

    CountDownLatch的计数器只能用1次,而CyclicBarrier 的计数器可以使用rest()方法重置,所以CyclicBarrier 能处理更为复杂的业务场景。

  • 相关阅读:
    PGsql 基本用户权限操作
    Node.js版本管理工具 nvm
    js 数字前面自动补零
    浮点数向偶数舍入的问题 Round-to-Even for Floating Point
    Linux 目录下属性查看操作
    C语言之Bit-wise Operation和Logical Operation
    (转)SqlBulkCopy批量复制数据
    (转)VS2010启动调试时老是提示正在下载公共符号
    转 SVN 在vs中的使用
    (转)关于 HTTP meta 的 IE=edge 说明
  • 原文地址:https://www.cnblogs.com/ljy-skill/p/11111379.html
Copyright © 2011-2022 走看看