我怎么知道我正在开发的应用程序是单线程还是多线程? 例如,StackOverflow是一个多线程或单线程Application?
我们都登录到stackoverflow,这是否意味着...同时n个用户正在尝试访问stackoverflow登录类... checkLogin
方法?
那么我们应该声明checkLogin方法synchronized
吗?
答案 0 :(得分:2)
您怎么可能不知道您正在开发的应用程序是否是多线程的?你是开发者!
但是在Java中,除非你完全设法避免使用Thread.start(),Swing,AWT,RMI,垃圾收集,servlet容器等等,否则你的应用程序 是多线程的。
答案 1 :(得分:2)
StackOverflow不是一个常见的(桌面)应用程序,它是一个Web应用程序。
Web应用程序在某种应用程序服务器上运行,它几乎总是一个多线程程序。
关于同步方法,如果同时执行该方法的多个线程可能导致意外行为,则只需添加同步。通常 - 但不总是 - 在方法修改共享变量(例如计数器变量)或访问某些有限资源(例如套接字)时发生。
答案 2 :(得分:1)
您可以使用像OllyDbg这样的调试器来检查常见应用程序是否是多线程的