多线程部分笔记
Posted 代码小天才阿松
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程部分笔记相关的知识,希望对你有一定的参考价值。
多任务:
同时干多件事情,例如:吃饭玩儿手机,上厕所玩儿手机
多线程:
原来是单车道,但是车越来越多了 所以拓宽了到了 变成了多车道 ,不会出现拥堵的情况
进程
在操作系统中运行的程序就是进程 ,音乐 视频等.是系统资源分配的单位
线程
看电视时同时进行的声音,字幕,图像等就是线程,CPU调度和执行的单位
核心概念
线程创建
三种实现方式
-
Thread class 继承Thread类(重点)
-
Runnable接口 实现Runnable接口(重点)
-
Callable接口 实现Callbale接口(了解)
Thread
-
自定义想线程类继承Thread类
-
重写Run()方法,编写线程执行体
-
创建对象,调用.start()方法启动线程,调用.start()方法是同时执行,都是随机的CPU说了算, .run()是先跑自定义线程类内的
注意:线程开启不一定立即执行,由CPU调度
Runnable接口
实现Runnable接口,重写run方法,执行线程需要丢入Runnable接口实现类,调用.start()方法
与Thread对比:
Callable接口
-
实现Callable接口
-
重写call方法
-
创建执行服务 -->提交执行 - ->获取结果 - - >关闭服务ser.shutdownNow()
好处:可以定义返回值,可以抛出异常
龟兔赛跑案例
public class Race implements Runnable{
//胜利者
private static String winner;
静态代理
-
真实对象跟代理对象都要实现同一个接口
-
代理对象代理真实角色
好处:
-
代理对象可以做很多真实对象做不了的事儿
-
真实对象专注做自己的事儿
λ表达式
概念:
-
避免匿名内部类定义过多
-
其实质属于函数式编程
为什么要用λ表达式
-
避免匿名内部类定义过多
-
让代码看起来更简洁
-
去掉一堆没意义的代码,只留下核心逻辑
函数式接口
任何接口,如果只包含唯一一个抽象方法,那他就是一个函数式接口
以上是关于多线程部分笔记的主要内容,如果未能解决你的问题,请参考以下文章