一道说难不难的面试题~

runnable 和 thread的区别, 线程池中他们的区别,两个都是怎么工作的 ???
求详细解答~
#Java#
全部评论
一个是父类要继承,一个是接口要实现。 java可以实现多个接口,但只能继承一个父类,所以runnable更灵活一点。
点赞 回复
分享
发布于 2018-07-15 19:35
个人理解:当实现了runnable的类放进线程池执行时,线程池会创建一个叫worker的类实例,放进工作集。worker的构造方***创建一个线程,这个线程把这个worker本身放进去,就是new Thread(this)。然后线程池调用这个线程的start会去执行worker的run方法。执行完毕会去等待队列获取任务继续执行。如果没有获取到任务那么就要查看是否当前线程数大于核心线程数,是的话将等待初始化设置的存活时间后退出循环,线程结束。有个比较好的源码解析可以看看 https://www.cnblogs.com/qingquanzi/p/8146638.html
点赞 回复
分享
发布于 2018-07-15 20:14
滴滴
校招火热招聘中
官网直投
runnable只是一个约定的接口 ,如果你想自己实现线程池自己定义接口随便叫都行。线程池里面task实现runnable接口放到阻塞队列里面,同时维持worker类中的线程去真正执行task,执行task其实就是调用runnable接口的run方法,所以runnable没啥含义,thread才是真正意义的可运行的线程
点赞 回复
分享
发布于 2018-07-15 21:03
感觉是一个东西
点赞 回复
分享
发布于 2018-07-15 19:35
Runable 是任务 ,线程是线程 ,线程池中的任务在工作队列,线程池中的线程取队列首节点任务执行,不知道对不对
点赞 回复
分享
发布于 2018-07-15 19:57
threadpoolexecutor 里面worker工作类实现了Runnable接口 worker的构造函数,传了一个task,也传了一个thread,其实就是把任务和线程解耦了 我是这么理解的。。
点赞 回复
分享
发布于 2018-07-15 20:17
可以看下我的博客 https://xiepuhuan.github.io/2017/10/26/Java线程池源码解析/
点赞 回复
分享
发布于 2018-07-16 09:48

相关推荐

#字节# #网络运维# 🕒 被挂时间3月29日一、Python部分(如果是因为技术凉,那就是这部分)1、Python用的咋样,写过什么项目或者脚本答:需要参考网上代码,学校开过一学期的课,课下写了一个自动登录签到电脑端手游领各种奖励的脚本,再就是一些网络运维用的脚本,用来连模拟器上设备2、具体说说网络运维脚本用paramiko、telnetlib之类的模块写一些批量配置设备的脚本,设备配置文件每日保存到txt上的脚本(以为要继续问实现了,我还准备了一些paramiko的对答内容)3、Python要用到很多正则表达式,用得怎么样不太熟练,一般都得用网上的辅助Python部分结束【悲】二、网络部分1、做过什么组网项目答:讲了讲经典那种企业网园区互联的2、用到什么协议(略)3、你提到三层交换机之间用链路聚合,讲讲用答:链路聚合的效果和目的提高可靠性,比如用四条链路做聚合,设置两条链路作为活动端口,运行lacp协议可以做到动态协商,如果活动端口down可以自动补足两个活动端口,对业务运行不会出现影响4、你提到主园区用到三层架构,二三层跑的mstp+vrrp,mstp有啥用答:mstp用在有多个vlan的二层场景,即具备rstp的快速收敛能力,又可以做到分实例来给不同的vlan设定自己的生成树,实现防环的同时负载均衡5、mstp势必要阻塞一些端口,这样的情况下流量都从另一个设备走怎么办,如何避免这种情况答:mstp单个实例拥有自己的生成树,比如实例一可以以左侧设备为根,实例二可以以右侧设备为根,实现负载均衡6、vrrp也分主备,流量都从主设备走不就浪费了吗,如何避免这种情况答:如上,之所以mstp+vrrp组网是因为他们都适合流量负载均衡,可以vlan1的主设备放在左,vlan2的主设备设置在右,实现设备利用7、为啥不全用ospf答:感觉跨大地域用ospf连有点怪8、bgp和ospf是不同的协议,bgp和ospf怎么相互学习?答:bgp有IGP路由引入,ps:这里才20分钟,我听到bgp了以为恶战将临,什么防环、反射器、路由属性、选路优先呼之欲出9、我没有问题了我:😨总结:回想起来他也没开摄像头,我感觉像是已经有人选了,随便面面,网络部分看了很多面经,HCIP也是人证合一了技术都懂,结果没能施展有些遗憾
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务