关于java多线程和处理并发,我一直理解有点混,所以向大神们请教。
首先,关于多线程,我一直的理解是,客户端向服务器发起请求时,要运行服务器某个方法,那么服务器会开启一个客户端线程,然后呢,多线程只会在同一个客户端内部起作用,比如有两个客户端,同时要运行服务器端的这个方法,那么所谓的多线程之间的互斥锁和同步锁只会在同一客户端请求内部起作用,而两个客户端之间的线程是没法关联的,也就是相当于两个客户端相当于开启两个副本,这两个副本互不干扰,我想问一下我理解的是不是有问题?
第二,如果真的如我理解,多线程只能在同一客户端程序或同一服务器请求实现多线程同步,互斥等锁,那以java web为例,如果用户量较大,那常常会出现多个用户请求要运行同一个服务端方法,而且会修改同一个数据资源,这样可能就会出问题,那如何去避免java web中这样多个客户端同时请求修改同一个数据时出现数据错误呢?这应该也是所谓的并发问题吧?
首先多线程的互斥,只是针对需要互斥访问的资源,比如连接的是同一个数据库;数据库自己实现多线程的互斥;
所以对于多服务端访问外部资源,锁机制应该由外部实现