我正在构建一个使用两个类的网络爬虫:一个下载器类和一个分析器类。由于我对程序的设计,我将一些方法外包给了一个名为的静态类utils
(查找链接后缀,确定是否应该在给定一些变量的情况下下载它,等等)。由于在某个时间有不止一个下载器和不止一个分析器,我想知道他们是否可以从utils
类中的某些静态方法中得到错误的答案。
例如,假设分析器需要知道链接后缀——它正在使用utils.getSuffix(link)
方法。同时操作系统切换到一些下载线程,该线程也需要获取一些链接后缀并再次使用utils.getSuffix(link)
. 现在操作系统切换回没有得到正确响应的分析器线程。
- 我对吗?
- 如果我是对的,我应该添加
synchronized
到utils
类的每个方法中吗?或者我是否应该在每个线程中使用相关方法来防止这种情况,即使我正在复制代码?