#并发

使用pabot并发执行robotframework的testSuite

下载robotremoteserver-1.0.1.tar.gz、robotframework-pabot-0.22.tar.gz 执行以下命令,以安装pabot:pipinstallrobotremoteserver-1.0.1.tar.gzpipinstallrobotframework-pabot-0....

深入理解java:2.3.6. 并发编程concurrent包 之管理类---线程池

  我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:  如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。  那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被...

深入理解java:2.3.5. 并发编程concurrent包 之容器BlockingQueue(阻塞队列)

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。 阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器...

深入理解java:2.3.4. 并发编程concurrent包 之容器ConcurrentLinkedQueue(非阻塞的并发队列---循环CAS)

在并发编程中我们有时候需要使用线程安全的队列。如果我们要实现一个线程安全的队列有两种实现方式:一种是使用阻塞算法,另一种是使用非阻塞算法。使用阻塞算法的队列可以用一个锁(入队和出队用同一把锁)或两个锁(入队和出队用不同的锁)等方式来实现,而非阻塞的实现方式则可以使用循环CAS的方式来实现,本文让我们一起来研究下如何使用...

深入理解java:2.3.2. 并发编程concurrent包 之重入锁/读写锁/条件锁

重入锁Java中的重入锁(即ReentrantLock)  与JVM内置锁(即synchronized)一样,是一种排它锁。ReentrantLock提供了多样化的同步,比如有时间限制的同步(定时锁),可以被Interrupt的同步,即中断锁(synchronized的同步是不能Interrupt的...

深入理解java:2.3.1. 并发编程concurrent包 之Atomic原子操作(循环CAS)

java中,可能有一些场景,操作非常简单,但是容易存在并发问题,比如i++,此时,如果依赖锁机制,可能带来性能损耗等问题,于是,如何更加简单的实现原子性操作,就成为java中需要面对的一个问题。 在backport-util-concurrent没有被引入java1.5并成为JUC之前,这些原子类和原子操作方...

深入理解java:2.3. 并发编程 java.util.concurrent包

JUCjava.util.concurrent包,这个包是从JDK1.5开始引入的,在此之前,这个包独立存在着,它是由DougLea开发的,名字叫backport-util-concurrent,在1.5开始引入java,命名路径为java.util.concurrent,其中的基本实现方式,也有所改变。(来源于一位大...

Java多线程系列之:线程的并发工具类

一,Fork-Join1,定义:Fork-Join框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不能再拆时),再将一个个的小任务运算的结果进行join汇总。2,,Fork-Join体现了分而治之。什么是分而治之?规模为N的问题,当N<阈值,直接解决。当N>阈值,将N分解为k...

并发包学习之-atomic包

一,模拟并发代码:线程不安全的代码//并发模拟代码publicclassCountExample{//请求总数publicstaticintclientTotal=5000;//同时并发执行的线程数publicstaticintthreadTotal=200;//全局变量publicstaticintcount=0;p...
代码星球 ·2021-01-30

并发编程与高并发学习笔记六

J.U.C一,AbstractQueuedSynchronizer-AQS1.设计使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架利用一个int类型表示状态在AQS类中有一个叫waitStatus的成员变量,基于AQS有一个同步组件叫ReentrantLock,在这个组件中status表示获取锁的...

并发编程与高并发学习笔记五

线程池一,newThread弊端每次newThread新建对象,性能差线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多的系统资源导致死机或OMM缺少更多功能,如更多执行,定期执行,线程中断二,线程池的好处重用存在的线程,减少对象的创建和消亡的开销,新能好可以有效的控制最大并发线程数,提高系统资源利用率,...

并发编程与高并发学习笔记四

线程封闭一,什么是线程封闭把对象封装到一个线程里,只有一个线程能看到。这样就算这个对象不是线程安全的,也不会出现线程安全问题一,实现线程封闭的方法Ad-hoc线程封闭:程序控制实现,最糟糕,忽略堆栈封闭:局部变量,无并发问题多个线程访问一个方法时,方法中的局部变量会被拷贝一份到线程的栈中,所以局部变量是不会被多个线程访...

并发编程与高并发学习笔记三

不可变对象一,不可变对象的需要满足的条件1.对象创建以后其状态就不能修改2.对象的所有域都是final类型3.对象是正确创建的(对象创建期间,this引用没有逸出)二,可以采用的方式:1.将类设置为final,该类不能被继承2.将所有的成员声明为私有的,这样就不运行直接访问这些成员3.对变量不提供setter方法,将所...

并发编程与高并发学习笔记二

发布安全对象一,发布对象1.发布对象:是一个对象能够被当前范围之外的代码所使用2.对象逸出:一种错误的发布。当一个对象还没有构造完成时,就使他被其他线程所见//发布对象,这是一个不安全的对象publicclassUnsafePublish{privateString[]states={"a","b","c"};publ...

并发编程与高并发学习笔记一

一,线程安全性1.定义:当多个线程访问某个类时,不管运行时环境采用任何调度方式或者这些进程将如何交替执行,并且在主调代码中不需要任何额外的同步或协同,这个类都能表现出正确的行为,那么称这个类是线程安全的2.线程安全性体现在三个方面:原子性:提供了互斥访问,同一时刻只能有一个线程来对他操作可见性:一个线程对主内存的修改可...
首页上一页...678910...下一页尾页