面试问题:你在具体项目中,什么情况下用到了多线程?

javabtq 2012-05-06 11:16:17
周五面试的时候被问到的一个问题:在具体项目中,什么情况下用到了多线程?
我的回答是:
1、一个处理,用单线程可以做,但是使用多线程可以更快,可以考虑用多线程。
比如在对文件进行拷贝处理时,这时候可以开多个线程,对文件进行分段处理。这样效率上会有所提高。

2、对待可能同时进行两件事,这是单线程处理不了的,此种情况必须使用多线程。

当然,我自知回答的不是很好。因为在实际项目中,多线程用的地方确实不多。本人菜鸟。

请问大家在具体项目中,是怎么用的吗?

...全文
16533 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!

一般在网络应用程序中使用多线程的地方非常多!

另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,……
[/Quote]
一些C/S模式比如说网络游戏(基于socket协议)一般在服务器那边处理的时候一个客户端,一个线程;还有就是一些银行软件,用到了线程同步等等
BadPattern 2012-05-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!

一般在网络应用程序中使用多线程的地方非常多!

另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,……
[/Quote]

学习了,还有一种极为普遍的使用多线程的场景是UI编程,一般UI界面绘制于主线程,为了不阻塞主线程让用户体验更流畅,需要创建单独的线程处理耗时操作,处理完了再更新主界面,典型的案例就是android应用开发
周靖峰 2012-05-06
  • 打赏
  • 举报
回复
我只在做聊天软件和俄罗斯方块一类的东西的时候用到过多线程
jamie0828 2012-05-06
  • 打赏
  • 举报
回复
并发量大的场景,譬如从一个目录里读入大量文件写入数据库,使用多线程能够极大提高效率。
但是线程也不是越多效率越高,往往需要最后调优。
  • 打赏
  • 举报
回复
你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!

一般在网络应用程序中使用多线程的地方非常多!

另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,根本不可能靠多线程提高效率!

一般来说,磁盘 IO 的并发能力为 0,也就是说无法支持并发!网络 IO 的话由于带宽的限制的,使用多线程处理最多也只能达到带宽的极值。

对于磁盘 IO 来说,多线程可以用于一个线程专门用于读写文件,其他的线程用于对读取数据进行处理,这样才有可能更好地利用 CPU 资源。

如果仅仅是单纯的文件复制,使用多线程操作的话,会使用磁头在磁盘上不停地进行寻道操作,使得效率更为低下!
结贴是美德 2012-05-06
  • 打赏
  • 举报
回复 1
servlet时代的统计在线人数,
hibernate中session的分配,
shangyangi 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!

一般在网络应用程序中使用多线程的地方非常多!

另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,……
[/Quote]

学习了!
朱超ZhuChao.Tech 2012-05-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

你跟他说,如果做 java web 方面开发的话几乎用不到多线程!因为有多线程的地方 servlet 容器或者其他开发框架都已经实现掉了!

一般在网络应用程序中使用多线程的地方非常多!

另外,你说的拷贝文件使用多线程,那是没有用的!以多线程来提高效率的场景一般在 CPU 计算型,而不是在 IO 读写型。CPU 可以会有多个核心并行处理计算,但是磁盘 IO 就没这功能了,磁头只有一个,……
[/Quote]

说得好。
古布 2012-05-06
  • 打赏
  • 举报
回复
1。压力测试时,会用到多线程。
2。服务器编程时,会用到多线程。
3。使用监听器时,可能会用到多线程。
4。跑JOB时,可能会用到多线程。

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧