Java多线程在JavaWeb中的应用
- 格式:pdf
- 大小:100.81 KB
- 文档页数:1
Java多线程在JavaWeb中的应⽤
1.web应⽤中,要对某⼀个任务⽤多线程实现,最简单的代码格式是不是必须把要执⾏的代码放在run⽅法中?
WEB服务器会帮你把每个访问请求开辟⼀个线程,你只要按照你所开发的框架,⽐如tomcat会让你利⽤servlet这个框架来写代码。具体真的
⼀⾔难尽,反正不⽤写到RUN中,除⾮你想对线程控制到极致,例如你要做测试。2.部署在服务器上的⼀个⽹站,多个浏览器在访问同⼀个功能点时,存在多线程之说吗?
多个浏览器的意思如果是(⽆论多台电脑上还是同⼀台电脑上的)多个页⾯打开同⼀⽹站的某个功能页⾯,那么如第⼀个问题所说,每⼀次
访问(即打开页⾯)都是⼀个请求,服务器会为每个请求开辟⼀个线程,就是多线程。3.多线程和并发之间是怎么⼀种关系?
多线程执⾏效率就是评判并发效果的好坏,⾼并发的概念就是在保证数据准确的情况下,减少进程所需操作的时间,特别经典的是页⾯访问
服务器后,让服务器去修 改数据库,如果你的数据库优化做的到位,那么查找数据并返回给客户端的时间将⼤⼤减少,我们知道对于⼀个热
门⽹站的查询量是⾮常⼤的,然后⼀个服务器内存 可以接收的进程数量也是有限的,这样⼀来,我们就说某⼀时间段内处理线程(访问请
求)越多,那么并发效率就越好了。4.对于经典的买票程序,是因为要操作共同资源⽽是⽤多线程技术,那么对于⼀些平常的查询显⽰功能就没必要⽤多线程技术。对于这⾥发
起的多个查询请求,是多个线程吗?
买票程序应⽤与WEB就应该是多线程,共同资源存放在数据库中,和第三个问题的回答类似,这种商业性的站点更侧重于保证数据准确
性,有时候我们修改的某项 值会影响到别⼈的查询与增删,于是意外情况就产⽣了,例如在⼀个A线程(⽤户)正在修改某项值(买票)的
情况下,要减少1张的剩余票总量是不准确的,因为 当这个⽤户在⽅法中对获得的总剩余票数的同时(以获得总剩余票数,但还未减⼀),
另⼀个B线程(⽤户)也进⾏买票,那么B获得的总剩余票数与A是相同的, 因此他们如果同时被允许操作数据库的公共资源,那么当两⼈都只
想完购票的减⼀操作时,第三线程或其他线程的查询剩余票量将只会看到原本减少2张剩余量,实 际只少了⼀张,可以想象如果操作的线程
越多,误差将会更⼤。因此数据库才会有事务,锁等等概念来提⾼确保数据准确性前提下的并发效率。
初次接触,仅限于了解。