多线程
文章平均质量分 77
AlwaysByYourSide
这个作者很懒,什么都没留下…
展开
-
多线程(一)
一、进程和线程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位. 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源. 一个线程可以创建和撤销另一个线程原创 2016-06-03 21:46:53 · 314 阅读 · 0 评论 -
多线程之 Callable Future FutureTask
JAVA多线程实现方式主要有三种:继承Thread类、实现Runnable接口、使用ExecutorService、Callable、Future实现有返回结果的多线程一、Callable Runnable和Callable的区别是: (1)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得 (2)call方法可以抛出异常,run方法不可以 源码如下:/** *原创 2016-09-14 22:23:22 · 443 阅读 · 0 评论 -
JAVA并发编程之——CAS
锁的劣势锁机制存在以下问题: - 在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。 - 一个线程持有锁会导致其它所有需要此锁的线程挂起。在挂起和恢复线程等过程中存在着很大的开销,并且通常存在着较长时间的中断。 - 如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile变量是一种更轻量级的同步机制(使用这些变量时不会发生上原创 2017-10-10 19:30:45 · 298 阅读 · 0 评论 -
JAVA并发编程之——AQS
概述AQS,AbstractQueuedSynchronizer,即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等)。AQS内部包含一个FIFO的同步等待队列,简单的说,没有成功获锁的线程会在这个队列中等待,这个队列是一个双向链表。在基于AQS构建的同步器中,只能在一个时刻发生阻塞,从而降低上下文切换原创 2017-10-10 19:32:55 · 377 阅读 · 0 评论 -
JAVA并发编程之——线程池
Executor接口public interface Executor { void execute(Runnable command);}Executor提供了操作Runnable的接口,我们可以直接执行Runnable的方法,也可以创建Thread来执行Runnable,也可以根据实际情况把Runnable放入队列中按顺序执行。ExecutorService接口public inter原创 2017-10-10 19:39:00 · 458 阅读 · 0 评论 -
JAVA并发编程之——定时线程池
在JAVA并发编程之线程池的最后我们讲到了创建定时线程池,其实线程池的创建仍旧是使用的ThreadPoolExcutor的构造函数,具体代码如下:public ScheduledThreadPoolExecutor(int corePoolSize) { super(corePoolSize, Integer.MAX_VALUE, 0, NANOSECONDS, new原创 2017-10-10 19:41:42 · 3606 阅读 · 0 评论