![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
即将翻身的咸鱼
这个作者很懒,什么都没留下…
展开
-
多线程(二)---高阶篇
一.CAS1.概述(1)技术背景线程执行的任务,任务量比较小的时候,线程安全需要使用synchronized(多个线程同时竞争对象锁)加锁,效率比较低(竞争失败的线程很快的在阻塞态和被唤醒状态之间切换)(2)使用前提代码执行速度非常快(3)目的在安全的前提下优化效率—使用较多的场景:对变量修改保证线程安全(4)原理使用CAS,不造成线程阻塞(一直处于运行态)2.什么是CAS全称Compare and swap,即比较并交换当多个线程同时对某个资源进行CAS操作,只能有一个线程操作成功原创 2020-12-19 23:41:15 · 284 阅读 · 1 评论 -
创建两个线程交替打印1-100
问题描述创建两个线程交替打印1-100思路线程1进入run(),执行完打印和count++操作,调用wait()方法释放锁,线程2进入run(),notifyAll()唤醒线程1并获取锁,执行完打印和count++操作,调用wait()释放锁,重复执行…代码实现public class 创建两个线程交替打印1到100 implements Runnable{ public int count = 1; @Override public void run() {原创 2020-12-13 17:33:28 · 592 阅读 · 1 评论 -
多线程(一)---初阶篇
一、初识线程1.什么是线程进程是系统分配资源的最小单位,线程是系统调度的最小单位,一个进程内的线程之间是可以共享资源的,每个进程至少有一个线程存在,即主线程2.创建线程的方式2.1创建线程-方法1-继承Thread类可以通过继承Thread来创建一个线程类,该方法的好处是this代表的就是当前线程,不需要通过Thread.current.Thread来获取当前线程的引用class MyThread extends Thread{ @Override public void run(){ S原创 2020-09-28 22:57:23 · 186 阅读 · 0 评论