并发编程

54 篇文章 0 订阅
41 篇文章 0 订阅

Tsequential是算法串行版的执行时间,而Tconcurrent是算法并行版的执行时
在这里插入图片描述
在这里插入图片描述
,P是可以进行并行化处理的代码的百分比,而N 是你准备用于执行该算法的计算机的核数。
在这里插入图片描述

基本并发类

Thread类
:该类描述了执行并发Java应用程序的所有线程。
Runnable接口
:这是Java中创建并发应用程序的另一种方式。
ThreadLocal类
:该类用于存放从属于某一线程的变量。
ThreadFactory接口
:这是实现Factory
设计模式的基类,你可以用它来创建定制线程。

同步机制:

synchronized
关键字
:synchronized
关键字允许你在某个代码块或者某个完整的方法中定义一个临界段。
Lock
接口
:Lock
提供了比synchronized
关键字更为灵活的同步操作。Lock
接口有多种不同类型:ReentrantLock
用于实现一个可与某种条件相关联的锁;ReentrantReadWriteLock
将读写操作分离开来;StampedLock
是Java 8中增加的一种新特性,它包括三种控制读/写访问的模式。
Semaphore
类
:该类通过实现经典的信号量机制来实现同步。Java支持二进制信号量和一般信号量。
CountDownLatch
类
:该类允许一个任务等待多项操作的结束。
CyclicBarrier
类
:该类允许多线程在某一共同点上进行同步。
Phaser
类
:该类允许你控制那些分割成多个阶段的任务的执行。在所有任务都完成当前阶段之前,任何任务都不能进入下一阶段

执行器

Executor
接口和ExecutorService
接口
:它们包含了所有执行器共有的execute()
方法。
ThreadPoolExecutor
类
:该类允许你获取一个含有线程池的执行器,而且可以定义并行任务的最大数目。
ScheduledThreadPoolExecutor
类
:这是一种特殊的执行器,可以使你在某段延迟之后执行任务或者周期性执行任务。
Executors
:该类使执行器的创建更为容易。
Callable
接口
:这是Runnable
接口的替代接口——可返回值的一个单独的任务。
Future
接口
:该接口包含了一些能获取Callable
接口返回值并且控制其状态的方法

Fork/Join框架

Fork/Join框架定义了一种特殊的执行器,尤其针对采用分治方法进行求解的问题。针对解决这类问题的并发任务,它还提供了一种优化其执行的机制。Fork/Join是为细粒度并行处理量身定制的,因为它的开销非常小,这也是将新任务加入队列中并且按照队列排序执行任务的需要。该框架涉及的主要类和接口如下。
ForkJoinPool
:该类实现了要用于运行任务的执行器。
ForkJoinTask
:这是一个可以在ForkJoinPool
类中执行的任务。
ForkJoinWorkerThread
:这是一个准备在ForkJoinPool
类中执行任务的线

退出一个线程

1程序执行Runtime类的exit()方法,而且用户有权执行该方法
2应用程序的所有非守护线程均已结束执行,无论是否有正在运行的守护线程。

线程状态

NEW
:Thread
对象已经创建,但是还没有开始执行。
RUNNABLE
:Thread
对象正在Java虚拟机中运行。
BLOCKED
:Thread
对象正在等待锁定。
WAITING
:Thread
对象正在等待另一个线程的动作。
TIME_WAITING
:Thread
对象正在等待另一个线程的操作,但是有时间限制。
THREAD
:Thread
对象已经完成了执行。

Thread对象的信息

在这里插入图片描述

在这里插入图片描述

interuptt 不会直接中断线程 会中断sleep  并且设置interrupted 为true

join

可以控制一定数量的并发线程数, 例如在main函数中 控制一定时间(达到了多少数量的线程) 就对这些线程join 只有在这些线程并发执行结束后 才会继续走main 函数(再执行其他的线程)

控制线程数: 每个单位一个线程  / 每几个单位(一组)一个线程  / 每一个核心数一个线程:Runtime.getRuntime().availableProcessors()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第1节你真的了解并发吗? [免费观看][免费观看] 00:27:48分钟 | 第2节理解多线程与并发的之间的联系与区别 [免费观看] 00:11:59分钟 | 第3节解析多线程与多进程的联系以及上下文切换所导致资源浪费问题 [免费观看] 00:13:03分钟 | 第4节学习并发的四个阶段并推荐学习并发的资料 [免费观看] 00:09:13分钟 | 第5节线程的状态以及各状态之间的转换详解00:21:56分钟 | 第6节线程的初始化,中断以及其源码讲解00:21:26分钟 | 第7节多种创建线程的方式案例演示(一)带返回值的方式00:17:12分钟 | 第8节多种创建线程的方式案例演示(二)使用线程池00:15:40分钟 | 第9节Spring对并发的支持:Spring的异步任务00:11:10分钟 | 第10节使用jdk8提供的lambda进行并行计算00:14:22分钟 | 第11节了解多线程所带来的安全风险00:13:16分钟 | 第12节从线程的优先级看饥饿问题00:18:42分钟 | 第13节从Java字节码的角度看线程安全性问题00:25:43分钟 | 第14节sy nchronized保证线程安全的原理(理论层面)00:13:59分钟 | 第15节synchronized保证线程安全的原理(jvm层面)00:25:03分钟 | 第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,死锁与重入锁00:24:58分钟 | 第18节深入理解volatile原理与使用00:28:30分钟 | 第19节JDK5提供的原子类的操作以及实现原理00:27:10分钟 | 第20节Lock接口认识与使用00:19:54分钟 | 第21节手动实现一个可重入锁00:26:31分钟 | 第22节AbstractQueuedSynchronizer(AQS)详解00:49:04分钟 | 第23节使用AQS重写自己的锁00:31:04分钟 | 第24节重入锁原理与演示00:12:24分钟 | 第25节读写锁认识与原理00:18:04分钟 | 第26节细读ReentrantReadWriteLock源码00:30:38分钟 | 第27节ReentrantReadWriteLock锁降级详解00:13:32分钟 | 第28节线程安全性问题简单总结00:15:34分钟 | 第29节线程之间的通信之wait/notify00:32:12分钟 | 第30节通过生产者消费者模型理解等待唤醒机制00:20:50分钟 | 第31节Condition的使用及原理解析00:17:40分钟 | 第32节使用Condition重写wait/notify案例并实现一个有界队列00:22:05分钟 | 第33节深入解析Condition源码00:21:15分钟 | 第34节实战:简易数据连接池00:24:53分钟 | 第35节线程之间通信之join应用与实现原理剖析00:10:17分钟 | 第36节ThreadLocal 使用及实现原理00:17:41分钟 | 第37节并发工具类CountDownLatch详解00:22:04分钟 | 第38节并发工具类CyclicBarrier 详解00:11:52分钟 | 第39节并发工具类Semaphore详解00:17:27分钟 | 第40节并发工具类Exchanger详解00:13:47分钟 | 第41节CountDownLatch,CyclicBarrier,Semaphore源码解析00:29:57分钟 | 第42节提前完成任务之FutureTask使用00:11:43分钟 | 第43节Future设计模式实现(实现类似于JDK提供的Future)00:19:20分钟 | 第44节Future源码解读00:29:22分钟 | 第45节Fork/Join框架详解00:28:09分钟 | 第46节同步容器与并发容器00:18:44分钟 | 第47节并发容器CopyOnWriteArrayList原理与使用00:15:52分钟 | 第48节并发容器ConcurrentLinkedQueue原理与使用00:31:03分钟 | 第49节Java中的阻塞队列原理与使用00:26:18分钟 | 第50节实战:简单实现消息队列00:11:07分钟 | 第51节并发容器ConcurrentHashMap原理与使用00:38:22分钟 | 第52节线程池的原理与使用00:42:49分钟 | 第53节Executor框架详解00:36:54分钟 | 第54节实战:简易web服务器(一)00:55:34分钟 | 第55节实战:简易web服务器(二)00:24:36分钟 | 第56节JDK8的新增原子操作类LongAddr原理与使用00:17:45分钟 | 第57节JDK8新增锁StampedLock详解00:29:37分钟 | 第58节重排序问题00:23:19分钟 | 第59节happens-before简单概述00:15:17分钟 | 第60节锁的内存语义00:13:54分钟 | 第61节volatile内存语义00:12:04分钟 | 第62节final域的内存语义00:34:07分钟 | 第63节实战:问题定位00:07:48分钟 |

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值