MindMap Gallery 多线程
这个是一个清晰的系统同步的思维导图,主要说明了开启多线程的两种方式、解决同步的三种方式等内容,每个内容下又分了好几个层级进行说明。 思维导图是一种视觉化的思维工具,通过中心思想或问题的放射性结构展现出来。它由主题、分支和关键词组成,旨在模仿人脑的神经网络结构。这种图形化的方式有助于促进记忆、组织信息以及激发创意。
40k classes
Cisco IOS interface
application development and deployment
Data Sanitization Tools
DATA COLLECTION MEASURES
Android
Java Training
Active reading techniques
Classification of visual languages
Game Theory
多线程
主题
总结
开启多线程的两种方式
继承类:创建多个Tread子类对象
共享数据(包括锁)需要额外设置为静态的
同步方法需要设定为静态的,使用class作为锁
实现接口:创建多个Tread类对象
共享数据天然的
并且单继承,猫类可以说是动物类,但是能说是Tread类吗,现实不符
而实现接口就很不错,猫类具有多线程的能力,很nice
解决同步的三种方式
共享数据
操作共享数据的代码
同步锁
理解为共享数据
同一份
this或class
所谓的同步锁,可以理解为单核cpu你进来了就别想出去了
视频目录
子主题
404.IDEA的使用与多线程的概述
405.IDEA的卸载
406.IDEA的介绍
407.IDEA的安装
408.启动IDEA并完成HelloWorld
409.Module的理解和创建
410.IDEA的常用设置
411.快捷键的设置
412.模板的使用和设置
413.章节概述_程序进程线程的概念
程序和进程:静态的代码,运行中的代码
一个进程可以有多个线程
360安全卫士是一个程序
点击运行,就可以起360进程
360中点击病毒扫描,垃圾清理,系统修复,就开启了三个线程,所以360是支持多线程的
对比jdk

414.单核与多核CPU的任务执行_并行与并发
对比手机,打游戏用大核,性能高,日常用小核省点
单核和多核执行多线程的区别
单核:厨师同时炒多道菜,这道菜抄一下,拿到菜炒一下,虽然来回切换线程耗费资源,但是可以保证厨师一直再干活,比如炖汤需要时间,此时厨师可以去炒其他菜,而不是等着汤炖好
频率:虽然是单核,但是频率高,效率高
时间片:每个线程分配时间,这个时间片执行线程1,哪个时间片执行线程2
多核:多个厨师炒多道菜
实际生活中,哪怕是8核cpu,除非手机上目前同时运行的线程只有8个,才不会切换线程,但这是不可能的,一个软件都可能有几十个线程,所以一定会有单核处理同时多线程的情况
并行和并发
并行:多个CPU同时执行多个任务。比如:多个人同时做不同的事。 并发:一个CPU(采用时间片)同时执行多个任务。比如:秒杀、多个人做同一件事。
多个人做不同的事,多个人做同一件事(时间片),有公共资源的竞争
java程序最少需要三个线程
main
gc
异常
415.多线程的优点等
手机上点外卖为例
分为文字和图片,文字更好加载,图片较大,如果是单线程,加载图片时,网络差,此时图片加载不成功,文字也在等待,没加载出来,如果多线程,哪怕网络差,文字加载出来了,图片慢慢加载就行
cpu的利用率
用户体验
416.创建多线程方式一:继承Thread类
417.创建过程中两个问题的说明
Thread子类,只是为了定义run方法
他的每一个对象都是一个线程,只是线程做的事情是一样的
两个问题
只有对象.start()才能启动一个线程
一个对象只能启动一次
418.继承方式的课后练习
匿名内部类
主线程中去启动分线程,明白代码哪里是主线程做的,哪里是分线程做的,new 分线程对象,调start方法都是主线程做的
this表示当前类的对象
万物皆对象,线程也被抽象成一个对象,我们操作线程对象,就是操作线程
419.线程的常用方法
420.线程优先级的设置
如何设置优先级
优先级高也只是概率上,并不一定
421.例题:继承Thread方式,多窗口卖票
422.创建多线程的方式二:实现Runnable接口
一样用Tread对象来启动线程以及执行自己的run(),但是会判断,如果接口对象有值,则执行接口中的run()方法
Tread构造函数传入Runable()接口对象,为线程取名需要单独set了
Runable接口中的run方法中获取线程对象
423.例题:实现Runnable方式,多窗口卖票
将run方法抽取出来,作为一个对象
424.两种创建方式的对比
425.每天一考
426.复习:IDEA使用与多线程基本概念
427.复习:线程的创建与常用方法
428.线程的生命周期
429.理解线程的安全问题
多个线程只有操作共享数据时才会出现安全问题
430.线程安全问题的举例和解决措施
431.同步代码块处理实现Runnable的线程安全问题
432.同步代码块处理继承Thread类的线程安全问题
433.同步方法处理实现Runnable的线程安全问题
434.同步方法处理继承Thread类的线程安全问题
435.线程安全的单例模式之懒汉式
结合前面的单例模式一起听
436.死锁的问题
437.Lock锁方式解决线程安全问题
438.同步机制的课后练习
439.线程通信的例题
440.sleep()和wait()的异同
441.线程通信:生产者消费者例题
442.创建多线程的方式三:实现Callable接口
443.使用线程池的好处
444.创建多线程的方式四:使用线程池