java网络操作和独立线程上的解析
将网络操作和解析拆分到不同的线程上是否有好处?我意识到这两者都应该在非UI线程上执行;这不是我的问题。网络操作应该在网络线程上运行,然后将数据传递给要解析的解析线程吗
以下是我看到的一些权衡:
pro
- 这两种类型的操作不能相互阻止(?)李>
- 这两种类型的操作可以放在单独的线程池中,并分别进行调优
con
- 上下文切换可能会引入一些延迟
- 线程越多,就越复杂
- 流解析变得困难/不可能
你可以在下面搜索框中键入要查询的问题!
将网络操作和解析拆分到不同的线程上是否有好处?我意识到这两者都应该在非UI线程上执行;这不是我的问题。网络操作应该在网络线程上运行,然后将数据传递给要解析的解析线程吗
以下是我看到的一些权衡:
pro
con
# 1 楼答案
你几乎已经自己回答了这个问题。除非您正在执行的解析需要很长时间,否则实际上不会有。网络操作几乎总是成为你应用程序的瓶颈,所以考虑一下你正在执行的处理是否可以减少到线程可以从因特网上下载的宝贵时间。p>
对于大量解析需要几微秒到几毫秒的应用程序,我看不出对用户有什么明显的区别。如果你的解析需要相当长的时间,你可以像你说的那样创建一个单独的解析线程,并在它们之间创建生产者/消费者关系。这将给你的应用程序增加相当多的复杂性,我认为这是不值得的,除非你已经执行了某种分析来确定这是一个问题
确保您没有对应用程序进行过早的优化,并且您已经对其进行了分析(或确实知道),以确定这是否必要。:)