面试问题:你在具体项目中,什么情况下用到了多线程?
周五面试的时候被问到的一个问题:在具体项目中,什么情况下用到了多线程?
我的回答是:
1、一个处理,用单线程可以做,但是使用多线程可以更快,可以考虑用多线程。
比如在对文件进行拷贝处理时,这时候可以开多个线程,对文件进行分段处理。这样效率上会有所提高。
2、对待可能同时进行两件事,这是单线程处理不了的,此种情况必须使用多线程。
当然,我自知回答的不是很好。因为在实际项目中,多线程用的地方确实不多。本人菜鸟。
请问大家在具体项目中,是怎么用的吗?
------解决方案--------------------servlet时代的统计在线人数,
hibernate中session的分配,
------解决方案--------------------
你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!
一般在网络应用程序中使用多线程的地方非常多!
另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,根本不可能靠多线程提高效率!
一般来说,磁盘 IO 的并发能力为 0,也就是说无法支持并发!网络 IO 的话由于带宽的限制的,使用多线程处理最多也只能达到带宽的极值。
对于磁盘 IO 来说,多线程可以用于一个线程专门用于读写文件,其他的线程用于对读取数据进行处理,这样才有可能更好地利用 CPU 资源。
如果仅仅是单纯的文件复制,使用多线程操作的话,会使用磁头在磁盘上不停地进行寻道操作,使得效率更为低下!
------解决方案--------------------并发量大的场景,譬如从一个目录里读入大量文件写入数据库,使用多线程能够极大提高效率。
但是线程也不是越多效率越高,往往需要最后调优。
------解决方案--------------------我只在做聊天软件和俄罗斯方块一类的东西的时候用到过多线程
------解决方案--------------------1。压力测试时,会用到多线程。
2。服务器编程时,会用到多线程。
3。使用监听器时,可能会用到多线程。
4。跑JOB时,可能会用到多线程。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------