Java多线程总结

一.多线程的创建方式:
(1).使用Thread继承类的方式创建多线程
1. 定义类,继承Thread
2. 重写run方法。
3. 创建Thread子类对象
4. 调用start方法。
(2).使用Runnable实现接口的方式创建多线程
1. 定义类,实现Runnable接口。
2. 重写run方法。
3. 创建Runnable接口的实现类对象
4. 创建Thread对象,在构造方法位置传递Runnable接口的实现类对象
5. 调用start方法启动线程

二.Runnable实现接口方式的好处:
1. 解决java中类与类只能单继承的局限性。
2. Runnable接口中只有一个run方法,只需要关注线程任务,功能更加 的纯粹。
3. 降低耦合性(关联性)
4. 可以更加方便的实现线程间数据的共享。

三.线程安全问题的出现的原因
当多个线程同时操作共享的数据,那么就有可能引发线程安全问题。

四,同步代码块解决线程安全问题
synchronized(锁对象) {
//…
}
只有持有锁的线程才能够进入到同步代码块中。

五.同步方法解决线程安全问题
修饰符 synchronized 返回值类型 方法名() {
//方法体;
}

同步方法相当于把整个方法体都加上了同步代码块。
同步方法也是有锁的:如果方法是非静态的,那么锁对象是this,
                  如果方法是静态的,那么锁对象是类名.class(字节码对象)

六.线程6个状态的名称
1.NEW(新建): 当我们创建好Thread或者Thread子类对象时, 该线程处于新建状态。
2.RUNNABLE(运行): 当线程调用start方法后,就处于了运行 状态。
3.BLOCKED(受阻塞): 当线程等待获取锁的时候,那么该线程处 于受阻塞的状态。
4.WAITING(无限等待): 如果没人来叫我,那么就永远等待,这 个就是无限等待。 当调用wait()方法 ,线程可以进入到无限等待状态
5.TIMED_WAITING(计时等待): 如果等待的过程中时间到了可 以自己醒,那么就是计时等待 。 比如sleep(毫秒值), wait( 毫秒值)方法
6.TERMINATED(死亡):当线程执行完自己的run或者调用了stop 方法,就会变成死亡状态。

七.等待唤醒机制
wait(); 让线程等待,只要其他线程不唤醒,就一直等。
notify(); 唤醒一个等待的线程。
这些方法一定要放在同步代码中,并且使用锁对象去调用。

八.Java中线程池运行原理
线程池就是一个容器,里面预先存储了很多线程。 里面的线程可以复用,可以多次执行任务。

线程池的好处:可以避免频繁创建以及销毁线程引发的性能问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值