多线程 常见面试题

1:继承thread,记住启动线程是 .start();不是 .run() 切记

2:实现runnable :runnable是任务,启动还得把任务放到thread中才能启动,还有在runnable中无法使用thread方法,无法直接getname,需要用thread.方法 去操作,一定要切记

3:利用callable和future接口方式实现   看一下就好,应用的不多,要记住有这个方式,这个也是实现

前面几个没啥好说的,说下最后几个

1:守护线程

看图:把2设置成了守护线程,当线程1执行结束后,告诉线程2,你可以结束了,看下图,看仔细,线程2并没有把100条都执行完,当告知的那一刻,线程2陆陆续续的结束了,并不是立即停止,中间有个告知的时间

实际应用:当你聊天结束的时候,传输文件也可以停止,这就是守护线程

2:出让线程:

正常的当飞机抢到了cpu使用权之后,一顿输出,现在飞机抢到后,第二次输出的时候,再次与坦克公平竞争,每一次输出都公平竞争

3:插入线程

        永远是thread线程先执行

线程的生命周期:

线程池原理:

       核心线程满了就放到任务队列,队列满了就开启最大线程数,最大线程数也满了,就执行拒绝策略,如下图,如果有任务10,就被拒绝了

线程池怎么定义参数:

        I/O密集型:比如大量线程等待在数据库的读写上,设高点,因为io的速度相对于cpu来说会很慢,根据公式计算

        cpu密集型:完全没有阻塞,设置成cpu核心数就行,工程上一般设置核心数+1,这样的话当线程因为额外的内存也失效或者其他原因导致阻塞时,这个额外的线程可以顶上,从而保证cpu的利用率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值