#并发

并发编程学习笔记(12)----Fork/Join框架

  Fork指的是将系统进程分成多个执行分支(线程),Join即是等待,当fork()方法创建了多个线程之后,需要等待这些分支执行完毕之后,才能得到最终的结果,因此join就表示等待。在实际的使用中,如果毫无顾忌的使用fork()来开启线程,可能会由于线程过多而影响系统性能,因此在jdk中提供了ForkJoinPool...

并发编程学习笔记(11)----FutureTask的使用及实现

  Future模式解决的问题是。在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口就是Future的实现,它可以让当前线程将任务交给Future去执行,然后当前线程就可以去干别的事,知道耗时任务执行完成之后,当前线程直接获取...

并发编程学习笔记(10)----并发工具类CyclicBarrier、Semaphore和Exchanger类的使用和原理

在jdk中,为并发编程提供了CyclicBarrier(栅栏),CountDownLatch(闭锁),Semaphore(信号量),Exchanger(数据交换)等工具类,我们在前面的学习中已经学习并分析了CountDownLatch工具类的使用方式和源码实现,接下来我们继续学习CyclicBarrier,Semaph...

并发编程学习笔记(9)----AQS的共享模式源码分析及CountDownLatch使用及原理

  前面已经说过了AQS的原理及独享模式的源码分析,今天就来学习共享模式下的AQS的几个接口的源码。  首先还是从顶级接口acquireShared()方法入手:publicfinalvoidacquireShared(intarg){if(tryAcquireShared(arg)<0)doAcquireSha...

并发编程学习笔记(8)----ThreadLocal的使用及源码分析

  ThreadLocal,顾名思义,就是线程的本地变量,ThreadLocal会为每个线程创建一个本地变量副本,使得使用ThreadLocal管理的变量在多线程的环境下,每个线程都是访问的是自己内部的副本变量,将全局变量局部化,跟局部变量一样的使用,从而避免了一些线程安全的问题。比如在数据库连接池中获取的连接时,此时...

并发编程学习笔记(7)----线程之间的通信

  前面所有的线程都是独立运行的,几个线程之间只会存在竞争锁和资源的管理,但是在多线程的环境下可能会需要多个线程同时协作完成,当某个线程执行一定操作之后,需要其他线程的帮助才能执行完成,此时该线程该如何去通知其他线程执行任务,当其他线程执行时该线程又处于什么状态,当其他线程执行完成后,又该如何使当前线程执行。这就是我们...

并发编程学习笔记(6)----公平锁和ReentrantReadWriteLock使用及原理

(一)公平锁  1、什么是公平锁?  公平锁指的是在某个线程释放锁之后,等待的线程获取锁的策略是以请求获取锁的时间为标准的,即使先请求获取锁的线程先拿到锁。  2、在java中的实现?  在java的并发包中提供了ReentrantLock提供了重入锁并且也提供了公平锁(FairSync)和非公平锁(NonfairSy...

并发编程学习笔记(5)----AbstractQueuedSynchronizer(AQS)原理及使用

(一)什么是AQS?阅读java文档可以知道,AbstractQueuedSynchronizer是实现依赖于先进先出(FIFO)等待队列的阻塞锁和相关同步器(信号量、事件,等等)提供一个框架,它是一个依靠单个原子 int 值来表示状态的大多数同步器的一个基础类。在jdk中他的实现的类有Semaph...

并发编程学习笔记(4)----jdk5中提供的原子类及Lock使用及原理

(1)jdk中原子类的使用:jdk5中提供了很多原子类,它会使变量的操作变成原子性的。原子性:原子性指的是一个操作是不可中断的,即使是在多个线程一起操作的情况下,一个操作一旦开始,就不会被其他线程干扰。jdk中的rt.jar中提供给了很多的原子性操作类。它们是位于java.util.concurrent.atomic包...

并发编程学习笔记(3)----synchronized关键字以及单例模式与线程安全问题

再说synchronized关键字之前,我们首先先小小的了解一个概念-内置锁。什么是内置锁?在java中,每个java对象都可以用作synchronized关键字的锁,这些锁就被称为内置锁,每个对象的锁的信息都存在对象头中所以synchronized关键字在使用过程中之所以能够保证线程的安全,也是因为使用了锁。下面就说...

并发编程学习笔记(2)----使用多线程带来的风险

 说到多线程带来的风险,首先要了解一个概念-临界区。  什么是临界区?  临界区是用来表示一种公共的资源(共享数据),它可以被多个线程使用,但是在每次只能有一个线程能够使用它,当临界区资源正在被一个线程使用时,其他的线程就只能等待当前线程执行完之后才能使用该临界区资源。  比如一台饮水机,比如办公室办公室里有...

并发编程学习笔记(1)----多线程几种实现方式

多线程是指机器支持在同一时间执行多个线程,能够提高cpu的利用率,提高程序的执行效率。(1)继承Thread类多线程可以通过继承Thread类并重新Thread的run方法来启动多线程。然后通过Thread的start方法来启动线程。上代码:packagecom.wangx.thread.t1;publicclassD...

阿里云服务器 如何处理网站高并发流量问题?(含教程)

很多平台一旦做大了,平台的流量就会陡增,同时并发访问的流量也会暴增,原本规划的硬件配置就无法满足当下的流量问题。那么如何处理好高并发的流量问题呢?小编将这些分为2个方面:架构层面和网站本地项目层面。1、硬件升级假设一台服务器最多能支持每天10万独立IP,如果访问量增大的话,那么必须升级这台服务器的配置才能解决问题,否则...

JMeter压力测试及并发量计算-2

一个每天1000万PV的网站需要什么样的性能去支撑呢?继续上一篇,下面我们就来计算一下,前面我们已经搞到了一票数据,但是这些数据的意义还没有说。技术是为业务服务的,下面就来说说怎么让些数据变得有意义。一、聚合报告初识聚合报告是不是有些眼熟,是的你没看错,他跟ApacheAB的结果是类似的,事实上LoadRunner也会...

Jmeter对HTTP请求压力测试、并发测试的简单使用方法

对于服务器性能测试这块的经验更是少得可以忽略。迫使不得不让我们去尝试了解测试的知识。首先我们的需求场景如下:服务器硬件:(只有一台)系统:CentOS7WebServer:Tomcat7.0Jdk:1.8CPU:8核2.9GHz两个内存:16G报名应用系统:只需要向外提供一个报名和找回报名号的接口。我们需要:测试服务器...
首页上一页...45678...下一页尾页