多线程总结

线程与进程

进程

​ 是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间

线程

​ 是进程中的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个线程

​ 线程实际上是在进程的基础上进一步划分的,一个进程启动后,里面的若干执行路径又可以划分成若干个线程

同步与异步&并发与并行

同步:排队执行,效率低但是数据安全

异步:同时执行,效率高但是数据不安全

并发:指两个或多个事件在同一个时间段内发生

并行:指两个或多个事件在同一时刻发生(同时发生)

实现Runnable

实现Runnable 与 继承Thread相比有以下优势:

1、通过创建任务的方式,给线程分配的方式来实现的多线程,更适合多个线程同时执行相同任务的情况

2、避免单继承的局限性

3、任务与线程本身是分离的,提高了程序的健壮性

4、后续学习的线程池技术,接受Runnable类型的任务,不接受Thread类型的线程

守护线程

线程:分为守护线程和用户线程

用户线程:当一个进程不包含任何的存活的用户线程时,用户进程结束

守护线程:守护用户线程,当最后一个用户线程结束时,所有守护线程自动死亡

线程安全

1、同步代码块

2、同步方法

3、显式锁Lock

多线程通信问题

生产者与消费者

生产者 休眠,唤醒消费者;消费者休眠,唤醒生产者。以此循环往复

线程的六种状态

1、New:线程刚被创建但还没有启动的状态

2、Runnable:运行时的状态

3、Blocked:被阻塞的状态

4、Waiting:无限等待的状态

5、Timed Waiting:计时等待一定时间后,恢复运行状态

6、Terminated:已退出的状态

带返回值的线程Callable

面试问题:Java里的第三种线程实现方式,Callable

线程池概述

线程的频繁创建和销毁需要消耗大量时间,所以使用线程池,线程池可以把许多线程放在一起重复利用,节省大量时间,提高了效率

四种类型:

1、缓存线程池:不定长,长度无限制,线程池满就扩容

2、定长线程池:定长,线程池满就等待

3、单线程线程池:空闲则使用,不空闲则等待

4、周期性任务定长线程池:定时执行,当某个时机触发时,自动执行某任务

Synchronized和Lock的区别

SynchronizedLock
出身不同Java中的关键字JDK5以后出现的类
使用方式不同隐式锁,使用时不需要手动写代码显式锁,需要手动写代码来使用
等待是否可以中断不可中断,除非抛出或者正常运行结束可以中断
加锁的时候是否可以公平非公平锁(插队)fair参数为true时为公平锁(排队)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值