线程 关于面试的总结,自己搞的 有错的话说出来,我改

线程 进程线程区别?

进程是资源分配的最小单位,线程是cpu调度的最小单位
1,所有跟进程相关的资源,都被记录在pcb中
2,进程是抢占处理机的调度单元,线程是属于某个进程,共享资源
3,线程是只由堆栈寄存器,程序技术器和tcb组成
4,线程不能看成独立的应用,进程可以
5,进程有独立的运行空间,线程只有依附于进程运行,
6,进程的切换比线程的切换开销大

start跟run的区别?

1,调用start方法会调用一个新的子线程并启用
2,Run方法只是Thread的一个普通方法的调用

Thread跟Runnable的区别?

1,Thread是一个实例,Runnable是一个接口
2,Thread实现了Runnbale接口的类,是run方法实现了多线程,

如何实现处理线程的返回值?

1,主线程等待法:让主线程等待(可以是有Sleep()睡眠方法)别的线程执行完毕再执行主线程;
2,使用Thread的join()方法 阻塞当前线程,知道子线程执行完毕,再执行主线程;
3,使用FuTureable的isDone方法,可以获取线程的返回值

线程的状态?

1,新建(New):创建线程之后没有调用start()方法
2,运行(Runnable):包含Running和Ready
新的线程调用了start()方法,处于可运行状态但是还没有得到CPU的执行片段,会陪放入Ready线程池中
3,无线等待(Waiting):不会被分配CPU的执行时间,需要显示被唤醒
使用的join()方法,wait()方法,
4,限时等待状态(Timed Waiting)也就是主动的方式CPU执行片段,在一定的时间之后会被系统自动的唤醒;
使用的Sleep()睡眠方法,
5,阻塞状态(Blocked):等待获取排他锁;
6,结束状态(Treminated)已经终止的线程状态,线程已经结束执行

锁池

假如A线程已经拥有的一个对象(不是类)的锁,现有B,C线程想要调用这个对象的synchronized方法,由于B,C线程进入synchronized需要该对象锁的持有权,而锁的持有权在A线程,B,C线程出现阻塞,进入一个地方进行锁等待,这个地方就是该对象的锁池。

等待队列

假设A线程调用了wait()方法,A线程就是释放CPU和锁的拥有权(因为wait()方法只有在synchronized中才能出现,所有在释放锁之前,A线程已经拥过该对象的锁)可以使用notifyAll方法只有才会进入该对象的锁池中来竞争锁的拥有权,或者另外的一个线程调用了相同对象的notify()方法,会在该对象的等待池中随机的选出一个线程进入锁池 竞争锁的拥有权。

Sleep 跟 wait 方法的区别?

1,sleep是Thread类的方法,wait是Object类中定义的方法(wait你没有给他传递参数,他会进入无限期的等待状态,让别的线程使用notify()方法唤醒)
Thread.Sleep()方法只是让出CPU的执行片段,不会导致锁应为的改变;
Object.wait()不仅会让出CPU,还会释放已经占有的同步锁资源,以便让别的线程得到该资源进行执行;

notify和notifyAll的区别?

Notify:只会在随机在 等待队列 中唤醒一个线程,去竞争锁的机会;
notifyAll:会将所有处于 等待队列 的线程全部进入 锁池 共同去竞争所得机会;

多线程的实现方法?

1,Thread类本质上是实现了Runnable接口的实例,就代表一个线程的实例,启动线程的唯一方法就是使用Thread类的start方法,他会开启一个新的线程并且执行run方法,通过继承Thread类重写run方法就可以;
2,实现Runable接口,重写run方法;
3,实现Callable接口通过FuTureTask包装器来创建Thread线程

Interrupt(in ter rua pu te )的作用?

他只是一个中断线程的标记,当阻塞的贤臣个调用Interrput方法之后(join,sleep,write方法),就会爆出异常,而这个异常会清除终端标记,然后继续往下执行;

ThreadLocal是什么?有什么应用场景?

Threadlocal为每个使用该线程的变量创建一个副本,也就是说该线程可以意的改变这个副本,对其他的线程不会产生影响,主要是为了解决多线程下的访问相同变量的访问冲突问题;
应用场景:数据库连接跟session管理

ThreadLocal跟synchronized的对比?

ThreadLocal跟synchronized都是为了解决多线程下访问共同变量的冲突问题,ThreadLocal是牺牲存储空间给每一个线程创建一个空间来解决冲突的(ThreadLocalMap),而synchronized是根据互斥锁原理来解决冲突的,相对于synchronized,ThreadLocal更具有线程隔离性,只有在线程内才能获取对应的值,线程的外侧是不能够访问的;

创建线程池的方法(ThreadPoolExecutor) e ke sai ke te

线程池的五种状态

1,running 可以接受任务,也可以处理等待队列中的任务
2,shutdown 不接受新的任务 但是可以处理等待队列的任务
3,Stop 不接受新的任务,也不处理等待队列的任务,中断正在执行的任务
4,Tidying(tai ding) :所有的任务都销毁了,有调用钩子方法terminabted()
5,Terminabted(te mu nei ta de ):终止状态 terminabted()方法之后 线程都会成为这个状态

线程池的创建方式 是通过Executors工厂方法下的四创建方式

newCachedThreadPool:是一个线程数量不一定的线程池,他的最大线程数为integer.MAX_VALUE,这个数是比较大的,如果线程的数量大于需要处理的任务量的话,他会先回收空闲的线程,如果没有空闲的线程的话就会新建线程,但是线程池中的线程都是有超时限制的,默认是60秒 如果到达超时时间没有被调用的话就会被回收;这种先后才能池比较适合执行任务量大但是执行时间比较短的任务;
newFixedThreadPool:创建一个指定最大数量的线程池,每当提交一个任务都会创建一个新的线程,当线程处于空闲状态的时候,线程不会被回收,如果任务量大于线程池的最大数量的话,任务会在池队列中,等待空闲线程调用;
newScheduleThreadPool:创建一个核心线程数量是一定的,非核心线程是没有数量的限制的,当非核心线程空闲的时候会被立即回收,可以给线程指定一个延迟执行的命令或者指定一个定时执行的命令进行周期性的执行;
newSingleThreadPool:创建一个单线程的线程池,只有一个先后才能来执行任务,保证所有的任务会按照指定的顺序进行执行;如果这个线程出现了异常,会有另一个线程来替代它,保证顺序的执行;他最大的特点就是保证了线程的执行顺序,在任意给定的时间点不会多线程的活动;

线程池的执行流程?

当提交一个任务他会先判断核心线程是否已经满了,如果没有满的话就创建一个线程进行执行,满的话就将任务交给线程队列,如果线程队列没有满的话就放在队列里面等待执行,如果满了的话就交给线程池,如果仙鹤草呢个池没有满的话就创建线程执行任务,满了的话就按照拒绝策略进行处理heardr

IO的概念和五种模型

在我们程序员的世界里,一切皆文件而文件有事什么呢,文件就是一串二进制的流,不管是Socket,管道,来说一切都是流二进制文件的数据交换,也就是我们常说的I/O流(Input,Output),往流中读入数据,写出数据,
BI/O阻塞IO
只有完成某一个动作之后才能进行下一个动作(比如:我正在钓鱼,在没有钓到鱼的时候只能在鱼竿面前等待,不能去做其他的事情,只有在钓到鱼收杆之后才能做其他的事情)
NI/O非阻塞IO
等于说是有一个数据的缓冲区,如果有线程的数据准备好就进行读写操作,没有数据准备好的话,也不阻塞程序 直接返回没有准备好的信号,等待程序下一次轮询;
MI/O多路复用IO
多路复用IO其实是多了一个Select函数,select函数有一个文件的描述集合,对这些文件进行循环监听,当某个文件就绪 对这个文件进行处理(比如:一个人循环的监听多个鱼竿)他是属于非阻塞的IO所以效率比较高;
AI/O异步IO

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值