![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程
陈豪小可爱
生活需要操练起来了
展开
-
线程图解
程勋: qq.进程: qq一运行, 就一个进程线程:每个进程包包含多个线程,最少一个线程(被称为主线程)。cpu:每个cpu 同一时间点只能运行一个线程,这是来回切换,给人的感觉是很快地。创建线程:3中线程:用户线程,守护线程(保护线程)线程状态;新生----就绪--运行---阻塞---死亡新生:创建 thread就绪:调用start(调用不一定会被cpu立即执行) ...原创 2019-09-28 19:25:48 · 200 阅读 · 0 评论 -
线程-线程协作-管程法
wait()让线程堵塞;notifyAll()通知线程接触堵塞mq 的思想,列: 生产者生产,消费者消费,通过缓冲区生产者生产100个摸头,消费者买馒头。 消费者从缓冲区取馒头,如果馒头已卖完,就进入等待,等生产者做馒头,放到容器里,再通知消费者取馒头,如果生产者已经再容器里生产100个 则 进入等待,直到有消费者消费馒头,然后通知生产者解除等待/** * 协作模型:...原创 2019-10-03 08:22:19 · 111 阅读 · 0 评论 -
线程-信号灯-借助标志位
通过一个标志位,来让消费者或者生产者进行操作, 然后等待唤醒 和管程法一样思想/** * 协作模型:生产者消费者实现方式二:信号灯法 * 借助标志位 * * */public class CoTest02 { public static void main(String[] args) { Tv tv =new Tv(); new Player(...原创 2019-10-03 08:22:13 · 121 阅读 · 0 评论 -
synchronized-底层实现
jdk-早期- 重量級- os锁升级:偏向锁:自旋锁: cpu一直调度,-执行时间短,线程数少用自旋(它会旋10次,如果还得不到这把锁,升级为系统锁(让操作系统分配资源))os: cpu不调度,线程处于就绪状态 线程数量多,执行时间长 用系统锁问个问题哈,如果是自旋锁,除了当前线程其他线程,一直占用cpu就不属于就绪状态了,属于运行状态嘛,那这样其他线程...原创 2019-10-03 08:22:08 · 100 阅读 · 0 评论 -
线程-图
原创 2019-10-03 08:22:02 · 81 阅读 · 0 评论 -
网络编程-概念
电脑之间如何通信,然后在通过电脑自己的交流语言(协议,tcp,udp,http),中国人和中国人交流用中文,电脑之间用协议tcp:相当于打电话(安全点,低效,需要建立连接)udp:相当于写信(高效,不需要建立连接)通过ip找到你要访问的电脑,通过端口找到你要的服务,通过url 找到你要找的服务里面的资源(区分资源)网页编程:jsp,servlert网络编程:底层应...原创 2019-10-03 08:21:45 · 161 阅读 · 0 评论 -
线程-volatile
volatile:两个作用1:保证线程可见性2:禁止指令重排序1,2线程同时复制主内存的的flag,然后修改成false, 当从主内存读取,以及修改后再赋值给主内存是不可控制的,所以,当1线程修改后但没有赋值给主内存的时候,2线程也拿到主内存的数据,就出现线程不可见的问题指令重排:int a=3,首先是分配内存,初始化,2是赋值,3是对象指向,当创建对象的时候, 可能...原创 2019-10-03 10:36:40 · 143 阅读 · 0 评论 -
线程-cas(无锁优化)
保证线程安全加锁(synchronized),但是性能低,线程用cas加锁(其实是自旋锁)cas(v,expected,newValue)v=要改的那个值expected=期望是多少newValue=你要改成多少列子:int a=5现在a==5, 你要改成六, v:a,expected:5,newValue:6,想把a改成6,但你该修改的过程中,其他线程把a改成7,...原创 2019-10-03 11:00:43 · 180 阅读 · 0 评论 -
线程-atomic/longAdder
longAdder:我个人的问题:原创 2019-10-04 10:11:11 · 82 阅读 · 0 评论 -
线程-通信
原创 2019-10-02 11:40:00 · 74 阅读 · 0 评论 -
线程-死锁
理解:多个线程各自占有一些共享资源,并互相等待其他线程占有的资源才能进行,导致两个或多个都在等待对方释放资源(锁)列:两个 女生:想要口红和镜子, a拿到镜子(锁上),b拿到口红(锁上),a想再拿口红,b,想想再拿镜子,但是都在对方手里,直接锁死谁都拿不到...原创 2019-10-02 11:33:42 · 68 阅读 · 0 评论 -
创建线程方式一
/** * 创建线程 继承thread累 */public class StartTHhread extends Thread { /** * 线程入口点 */ @Override public void run() { for (int i = 0; i < 20; i++) { System.o...原创 2019-10-01 22:49:25 · 78 阅读 · 0 评论 -
创建线程方式二
/** * 创建线程方式二: * 1、创建:实现Runnable+重写run * 2、启动: 创建实现类对象 +Thread对象+ start * * 推荐: 避免单继承的局限性,优先使用接口 * 方便共享资源 * */public class StartRunnable implements Runnable{ @Override public void ru...原创 2019-10-01 22:49:50 · 84 阅读 · 0 评论 -
线程停止=--标识
/** * 线程 停止 有stop/destory, 现在api停止让用了, * 外部干涉--》加入标识 */public class stop7 implements Runnable { private boolean flag = true; private String name; @Override public void r...原创 2019-10-02 08:52:09 · 141 阅读 · 0 评论 -
创建线程的方式三(jdk8-lambda)
public class lambdaTest6 { public static void main(String[] args) { new Thread(()->{ for(int i=0;i<100;i++) { System.out.println("一边学习lambda"); ...原创 2019-10-02 00:44:30 · 1611 阅读 · 0 评论 -
线程-sleep
new 对象 线程进入新生状态start() 线程 进入就绪状态cpu 调度(并不是线程进入就绪状态 cpu就马山执行) ,cpu调度,线程进入运行状态通过调用sleep 线程堵塞,线程进入堵塞。不释放锁,后面的线程只等排队sleep()...原创 2019-10-02 09:06:58 · 138 阅读 · 0 评论 -
线程-yield
调用yield 当前线程 从运行状态 进入就绪状态,并且释放锁, 让出cpu的调度。原创 2019-10-02 09:11:00 · 113 阅读 · 0 评论 -
线程-join
join:当前线程 从就绪变成-运行状态,并且加上锁,必须等cpu执行完当前执行的join的线程,其它线程才能运行原创 2019-10-02 09:16:30 · 92 阅读 · 0 评论 -
线程并发-同步-synchronized
在一个多线程,保证数据的安全,保证数据的准确性,以及性能(越快越好)并发三要素:同一个对象,多个线程,同时操作列子:三个线程去取票,一共十张, 当a,b,c同时间取票,a会从主内存中拿到票,复制到自己的工作空间中,然后修改成9再赋给主内存。但是 当a拿到票的数据的时候,还没赋值新的数据给主内存的时候,b也拿到还没有赋值的数据,这样就都拿到a,b 就拿到一模一样的数据了,线程不...原创 2019-10-03 08:22:27 · 92 阅读 · 0 评论 -
线程并发-同步-synchronized
在一个多线程,保证数据的安全,保证数据的准确性,以及性能(越快越好)并发三要素:同一个对象,多个线程,同时操作列子:三个线程去取票,一共十张, 当a,b,c同时间取票,a会从主内存中拿到票,复制到自己的工作空间中,然后修改成9再赋给主内存。但是 当a拿到票的数据的时候,还没赋值新的数据给主内存的时候,b也拿到还没有赋值的数据,这样就都拿到a,b 就拿到一模一样的数据了,线程不...原创 2019-10-02 11:25:03 · 170 阅读 · 0 评论 -
线程-ReadWriteLock
ReadWriteLock:共享锁,排它锁(同时只有一个线程),读(共享锁)写(排它锁),在写的时候加一个锁(只有一个线程可以写),读的时候加一锁(所有线程现在可以读)...原创 2019-10-04 19:15:39 · 97 阅读 · 0 评论