并发
ApacheCrazyFan
巨人的肩膀
展开
-
Semaphore的使用之-公平与非公平信号量的测试
有些时候,获得许可的顺序与线程启动的顺序有关,这时信号量就要分为公平与非公平的。所谓的公平信号量是获得锁的顺序与线程启动顺序有关,但不代表100%地获得信号量,仅仅是在概率上能得到保证。而非公平信号量就是无关的了。创建测试用的项目semaphoreFairTest,类MyService.java代码如下:package com.yc.semephore_2;import java.原创 2017-03-19 21:06:04 · 1847 阅读 · 0 评论 -
使用Executors工厂类创建线程池
接口Executor仅仅是一种规范,是一种声明,是一种定义,并没有实现任何的功能,所以大多数的情况下,需要使用接口的实现类来完成指定的功能,比如ThreadPoolExecutor类就是Executor的实现类,但ThreadPoolExecutor在使用上并不是那么方便,在实例化时需要传入很多歌参数,还要考虑线程的并发数等与线程池运行效率有关的参数,所以官方建议使用Executors工程类来创建原创 2017-03-25 23:17:35 · 1496 阅读 · 0 评论 -
Executor接口介绍
在开发服务器端软件项目时,软件经常需要处理执行时间很短而数目却非常巨大的请求,如果为每一个请求创建一个新的线程,会导致性能上的瓶颈,因为线程对象的创建和销毁需要JVM频繁地进行处理,如果请求的执行时间很短,可能花在创建和销毁线程对象上的时间大于正真执行任务的时间,若这样,则系统性能大幅降低。在JDK5中提供了线程池的支持,主要的作用就是支持高并发的访问处理,并且可以将线程对象进行复用。核心原理原创 2017-03-25 20:05:44 · 576 阅读 · 0 评论 -
Exchanger的使用
类Exchanger的功能可以使2个线程之间传输数据,它比生产者/消费者模式使用的wait/notify要更加方便。所以本次将介绍此类在2个线程之间传递任意数据类型的数据,Exchanger类的使用与结构相当简单,主要的学习点就是exchange()方法。方法exchange()阻塞的特性类Exchanger中的exchange()方法具有阻塞的特色,也就是次方法被调用后等待其他线程来取数原创 2017-03-21 12:31:06 · 631 阅读 · 0 评论 -
Semaphore的使用之-多生产者-多消费者模式
本实验的目的不光是要实现生产者与消费者模式,还要限制生产者与消费者的数量,这样代码的复杂性就提高一些,但好在使用Semaphore类实现这个功能还是比较简单的。创建实验用的项目repastTest,类RepastService.java代码如下:原创 2017-03-21 00:05:30 · 1258 阅读 · 0 评论 -
Semaphore创建字符串池
类Semaphore可以有效地对并发执行任务的线程数量进行限制,这样功能可以应用在pool池技术中,可以设置同时访问pool池中数据的线程数量。本实验的功能是同时又若干个线程可以访问池中的数据,但同时只有一个线程可以获得数据,使用完毕后在放回池中。创建实验用的项目Semaphore_Pool_list,类ListPool.java代码如下:package com.yc.semephor原创 2017-03-20 00:04:48 · 417 阅读 · 0 评论 -
Semaphore的使用之-(多进路-多处理-多出路)和(多进路-单处理-多出路)
多进路-多处理-多出路本实现的目标是允许多个线程同时处理任务,更具体来讲,也就是每个线程都在处理自己的任务。创建实验用的项目Semaphore_MoreToOne_1,类Service.java代码如下:package com.yc.semephore_4_1;import java.util.concurrent.Semaphore;public class Service原创 2017-03-19 22:57:00 · 474 阅读 · 0 评论 -
Semaphore的使用之方法tryAcquire()的使用
无参方法tryAcquire()的作用是尝试的获得1个许可,如果获取不到则返回false,该方法通常与if语句结合使用,其具有无阻塞的特点。无阻塞的特点可以使线程不至于在同步处一直持续等待的状态,如果if语句判断不成立则线程会继续走slse语句,程序会继续向下运行。创建Java项目Semaphore_tryAcquire,MyService.java代码如下:package com.yc.原创 2017-03-19 22:20:07 · 20355 阅读 · 1 评论 -
线程-线程详解
读完本文你将了解到:线程简介线程创建的三种方式实现 Runnable 接口继承 Thread重写其 run 方法实现 Callable 接口重写 call 方法用 FutureTask 获得结果线程的基本属性优先级守护线程线程的生命周期线程的关键方法ThreadsleepObjectwaitThreadyieldThreadjoin转载 2017-02-26 21:56:18 · 689 阅读 · 0 评论 -
类Semaphore的同步性
单词Semaphore的中文含义是信号、信号系统意思。此类的主要作用是限制线程并发的数量,如果不限制线程并发的数量。,则CPUD的资源很快就会被耗尽,每个线程执行的任务相当缓慢,因为CPU要把时间片分配给不同的线程对象,而且上下文切换也要耗时,最终造成系统运行效率大幅降低,所以限制并发线程的数量还是非常有必要的。在生活中也存在这种场景,比如一个生产键盘的生产商,发布了10个代理销售许可,所有最原创 2017-03-16 13:33:54 · 518 阅读 · 0 评论