Java多线程(持续更新)
2021-04-29 11:46:42 0 举报
AI智能生成
Java多线程(持续更新)
作者其他创作
大纲/内容
多线程快速入门
线程与进程区别
进程是所有线程的集合,每一个线程是进程中的一条执行路径。
使用原因
多线程提高程序执行效率
应用场景
迅雷多线程下载、数据库连接池、分批发送短信等
创建方式
继承Thread类 重写run方法
实现Runnable接口,重写run方法
匿名内部类方式
推荐使用实现实现Runnable接口好,实现了接口还可以继续继承,继承了类不能再继承。
获取线程对象以及名称
守护线程
Java中有两种线程,一种是用户线程,另一种是守护线程。
用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止
守护线程当进程不存在或主线程停止,守护线程也会被停止。
使用setDaemon(true)方法设置为守护线程
用户线程是指用户自定义创建的线程,主线程停止,用户线程不会停止
守护线程当进程不存在或主线程停止,守护线程也会被停止。
使用setDaemon(true)方法设置为守护线程
多线程运行状态
图解
join()方法作用
当在主线程当中执行到t1.join()方法时,就认为主线程应该把执行权让给t1
优先级
priority来控制优先级,范围为1-10,其中10最高,默认值为5
Yield方法
大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。
面试题
T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行
Java内存模型
线程安全问题
当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作不会。
需求现在有100张火车票,有两个窗口同时抢火车票,请使用多线程模拟抢票效果。
线程安全解决办法
多线程之间同步synchronized
当多个线程共享同一个资源,不会受到其他线程的干扰。
1.修饰需要进行同步的方法(所有访问状态变量的方法都必须进行同步),此时充当锁的对象为调用同步方法的对象
2.同步代码块和直接使用synchronized修饰需要同步的方法是一样的,但是锁的粒度可以更细,并且充当锁的对象不一定是this,也可以是其它对象,所以使用起来更加灵活
锁(lock)
0 条评论
下一页