java提供的一些并发机制

第一:线程的基本操作

1.对线程的中断

Thread.interrupt()

2.等待线程的终止

Thread.join()

3.守护线程

setDaemon(true)

4.线程中不可控异常的处理

ExceptionHandler implements UncaughtExceptionHandler

5.使用ThreadLocal来实现线程的变量隔离,达到线程安全

6.线程组的使用(可以包含其他线程组,是个树形结构)

ThreadGroup

7.线程工厂类 ThreadFactory


第二:线程同步

1.基本synchronized

2.使用object对象进行同步

3.同步块中使用wait,notify,notifyAll方法

4.lock锁

lock

tryLock()

5.ReadWriteLock

6.lock.new Condition()


第三:线程同步辅助类

1.countdownlatch  countdown()  await()

2.Semaphore  acquire()  release()

3.CyclicBarrier    await()    isBroken()

4.Phaser  任务分阶段执行 

5.Exchanger  线程到达同步点时候交换数据


第四:线程执行器

1.Executor FrameWork

执行器框架  Executors  ThreadPoolExecutor  

Executor ExecutorService JoinPoolExecutor

getPoolSize()

getActiveCount()

getCompletedTaskCount()

shutDownNow()

isTerminated()

awaitTermination()


2.Callable可以带返回结果

调用submit()方法,返回一个list,调用get方法


3.执行任意一个任务 executor.invokeAny()

executor.invokeAll()


4.定时任务

ScheduledTaskExecutor



5.需要返回结果的任务

可以取消,可以判断执行情况,可以定义rejectTaskHandler



第五:Fork/Join框架

Fork/Join 框架使用了工作窃取算法

ForkJoinPool   RecursiveAction  RecursiveTask


第六:并发集合

大致分为阻塞式和非阻塞式

非阻塞式列表:ConcurrentLinkedDeque

阻塞式列表:LinkedBlockingDeque

带有延迟DelayQueue到某个日期执行

ThreadLocalRandom生成并发随机数

使用原子变量类

Atomic系列

第七:定制并发类

1.继承ThreadPoolExecutor类,改写方法

2.runnable可以设置优先级,接口继承Comparable接口

3.ThreadFactory

4.可以在Executor里面使用ThreadFactory

ExecutorService executorService = Executors.newCachedThreadPool(threadFactory);

executorService.shutdown();

executorService.awaitTermination(1,TimeUnit.DAYS);


5.ScheduledThreadPoolExecutor中的任务都必须继承RunnableScheduledFuture接口

6.ForkJoinPool可以使用ThreadFactory作为参数

7.ForkJoinPool可以使用ForkJoinTask的子类作为参数

8.通过实现lock接口自定义锁

java的AbstractQueuedSynchronizer类作为java提供并发同步的核心类

















你可能感兴趣的:(JavaSE)