多线程并发
文章平均质量分 88
多线程知识
exodus3
活到老学到老
展开
-
尚硅谷JUC高并发编程学习笔记(5)
一、读写锁回顾悲观锁和乐观锁的概念悲观锁:单独每个人完成事情的时候,执行上锁解锁。解决并发中的问题,不支持并发操作,只能一个一个操作,效率低 。乐观锁:每执行一件事情,都会比较数据版本号,看谁先提交版本号。新概念:表锁:整个表操作,不会发生死锁行锁:每个表中的单独一行进行加锁,会发生死锁读锁:共享锁(可以有多个人读),会发生死锁写锁:独占锁(只能有一个人写),会发生死锁读写锁:一个资源可以被多个读线程访问,也可以被一个写线程访问,但不能同时存在读写线程,读写互斥,读读共享。读写锁Re原创 2022-03-02 22:14:53 · 741 阅读 · 0 评论 -
尚硅谷JUC高并发编程学习笔记(4)Callable,FutureTask,JUC辅助类
一、Callable接口创建线程的多种方式:继承Thread类实现Runnable接口Callable接口线程池目前学习了有两种创建线程的方法,一种是通过创建 Thread 类,另一种是通过使用 Runnable 创建线程,但是,Runnable 缺少的一项功能是,当线程终止时(即 run()完成时),我们无法使线程返回结果。为了支持此功能,Java 中提供了 Callable 接口。读写锁的演变:...原创 2022-02-27 23:13:50 · 366 阅读 · 0 评论 -
尚硅谷JUC高并发编程学习笔记(3)多线程锁
多线程锁某一个时刻内,只能有唯一一个线程去访问这些synchronized 方法所有的静态同步方法用的也是同一把锁——类对象本身,这两把锁是两个不同的对象,所以静态同步方法与非静态同步方法之间是不会有竞态条件的但是一旦一个静态同步方法获取锁后,其他的静态同步方法都必须等待该方法释放锁后才能获取锁,而不管是同一个实例对象的静态同步方法之间,还是不同的实例对象的静态同步方法之间,只要它们同一个类的实例对象synchronized锁的是方法,则是对象锁同个对象锁的机制要等待,不同对象锁的机制调用同一个不用原创 2022-02-13 11:58:58 · 351 阅读 · 0 评论 -
尚硅谷JUC高并发编程学习笔记(2)线程通信与集合线程安全
一、线程间通信线程间通信的模型有两种:共享内存和消息传递线程间的通信具体步骤:(涉及上中下部)1、创建资源类,在资源类中船舰属性和操作方法2、在资源类操作方法:判断、操作、通知3、创建多个线程,调用资源类的操作方法4、防止虚拟唤醒问题1、synchronized案例操作线程的时候,等待线程使用wait()通知另外的线程操作用notify()、notifyAll()假设有两个线程,该线程在执行过程中,判断值(不是该值等待,让其他线程抢),操作值,通知另外一个线程的调度。通过使用两个线程对原创 2022-02-02 23:59:48 · 2411 阅读 · 0 评论 -
尚硅谷JUC高并发编程学习笔记(1)JUC简介与Lock接口
一、什么是 JUC1、JUC 简介在 Java 中,线程部分是一个重点,本篇文章说的 JUC 也是关于线程的。JUC就是 java.util .concurrent 工具包的简称。这是一个处理线程的工具包,JDK 1.5 开始出现的。2、进程与线程进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程(threa原创 2022-02-01 21:33:22 · 681 阅读 · 0 评论 -
Java线程基础面试大全
有多少种实现线程的方法?典型错误答案和正确答案实现 Runnable接口和继承 Thread类哪种方式更好?个线程两次调用 start()方法会出现什么情况?为什么?既然 start()方法会调用run()方法,为什么我们选择调用 start()方法,而不是直接调用run()方法呢?如何正确停止一个线程?如何处理不可中断的阻塞(例如抢锁时 ReentrantLock lock() 或者 ...转载 2020-02-27 11:38:38 · 11928 阅读 · 0 评论