文档管理中心

Java学习总结之多线程之基本概念与用法


作者:HW-WT

Summary:介绍了多线程的基本概念与用法

1. 多线程概念:

定义:线程是程序执行的一条路径,一个进程中可以包含多个线程;多线程并发执行可以提高程序效率,可以同时完成多个工作

应用场景:

1) Espace同时共享屏幕给多个电脑

2) 迅雷多个线程下载

2. 并行与并发

a) 概念:

i. 并行:就是两个任务同时运行,就是甲任务进行的同时,乙任务也在运行

ii. 并发:就是两个任务都请求运行,而处理器只能接受一个任务,就是把这两个任务安排轮流进行,由于时间间隔较短,使人感觉两个任务都在运行单核 只能实现并发,多核可以实现并行

iii. 单核只能实现并发,多核可以实现并行

b) 自定义继承Thread开启线程

i. run()没有真正开启线程,而start()真正开启了线程

ii. 步骤:A. 自定义继承Thread B. 重写run方法 C. 将要执行的代码写在run方法中 D. 创建该类对象 E. 开启新线程

iii. 注意:优先使用自定义继承Thread的方式,如果该类已经有父类了,则使用Runnable方法

c) 自定义实现Runnable接口

i. 步骤:A. 自定义类实现Runnable B. 重写run方法 C. 将要实现的代码写在run方法中 D. 创建Runnable接口的子类对象 E. 创建线程对象,将Runnable接口的子类对象以参数传入 F. 开启新线程

d) 匿名内部类开启线程

i. 继承Thread

ii. 实现Runnable接口

e) 更改线程名称

3. 休眠线程

4. 守护线程

该线程不会单独执行,当其他非守护线程都执行结束,自动退出

5. 加入线程

匿名内部类访问局部变量,需要将该局部变量设置为final

6. 线程同步

a) 同步代码块: 任何对象都可以当作锁对象;匿名对象不能当作锁,因为new的两个对象不是一个对象

b) 同步方法:

i. 非静态的同步方法,锁的是this

ii. 静态同步方法

iii. 非静态同步方法,锁对象也可以是当前类的字节码对象(因为当前类的字节码对象是唯一的)

7. 模拟铁路售票


需要使用synchronized同步,锁可以使用synchronized (TickerSeller.class)private static Object obj = new Object();

注意:不要锁while(true),否则只有一个人卖票


点赞
收藏
回复
2
分享
举报
浏览1817 发布于2019-10-25 02:37未知归属地
全部评论
最多点赞
最新发布
最早发布
写回答
新增插入模板功能
一键使用模板,快速填写内容,轻松发帖~
知道了
  • 为了保障您的信息安全,请勿上传您的敏感个人信息(如您的密码等信息)和您的敏感资产信息(如关键源代码、签名私钥、调试安装包、业务日志等信息),且您需自行承担由此产生的信息泄露等安全风险。
  • 如您发布的内容为转载内容,请注明内容来源。

我要发帖子

了解社区公约,与您携手共创和谐专业的开发者社区。