关于多线程的疑问
2016-05-17 17:15
127 查看
转自论坛的回复
1.web应用中,要对某一个任务用多线程实现,最简单的代码格式是不是必须把要执行的代码放在run方法中?
WEB服务器会帮你把每个访问请求开辟一个线程,你只要按照你所开发的框架,比如tomcat会让你利用servlet这个框架来写代码。具体真的一言难尽,反正不用写到RUN中,除非你想对线程控制到极致,例如你要做测试。
2.部署在服务器上的一个网站,多个浏览器在访问同一个功能点时,存在多线程之说吗?
多个浏览器的意思如果是(无论多台电脑上还是同一台电脑上的)多个页面打开同一网站的某个功能页面,那么如第一个问题所说,每一次访问(即打开页面)都是一个请求,服务器会为每个请求开辟一个线程,就是多线程。
3.多线程和并发之间是怎么一种关系?
多线程执行效率就是评判并发效果的好坏,高并发的概念就是在保证数据准确的情况下,减少进程所需操作的时间,特别经典的是页面访问服务器后,让服务器去修改数据库,如果你的数据库优化做的到位,那么查找数据并返回给客户端的时间将大大减少,我们知道对于一个热门网站的查询量是非常大的,然后一个服务器内存可以接收的进程数量也是有限的,这样一来,我们就说某一时间段内处理线程(访问请求)越多,那么并发效率就越好了。
4.对于经典的买票程序,是因为要操作共同资源而是用多线程技术,那么对于一些平常的查询显示功能就没必要用多线程技术。对于这里发起的多个查询请求,是多个线程吗?
买票程序应用与WEB就应该是多线程,共同资源存放在数据库中,和第三个问题的回答类似,这种商业性的站点更侧重于保证数据准确性,有时候我们修改的某项值会影响到别人的查询与增删,于是意外情况就产生了,例如在一个A线程(用户)正在修改某项值(买票)的情况下,要减少1张的剩余票总量是不准确的,因为当这个用户在方法中对获得的总剩余票数的同时(以获得总剩余票数,但还未减一),另一个B线程(用户)也进行买票,那么B获得的总剩余票数与A是相同的,因此他们如果同时被允许操作数据库的公共资源,那么当两人都只想完购票的减一操作时,第三线程或其他线程的查询剩余票量将只会看到原本减少2张剩余量,实际只少了一张,可以想象如果操作的线程越多,误差将会更大。因此数据库才会有事务,锁等等概念来提高确保数据准确性前提下的并发效率
1.web应用中,要对某一个任务用多线程实现,最简单的代码格式是不是必须把要执行的代码放在run方法中?
WEB服务器会帮你把每个访问请求开辟一个线程,你只要按照你所开发的框架,比如tomcat会让你利用servlet这个框架来写代码。具体真的一言难尽,反正不用写到RUN中,除非你想对线程控制到极致,例如你要做测试。
2.部署在服务器上的一个网站,多个浏览器在访问同一个功能点时,存在多线程之说吗?
多个浏览器的意思如果是(无论多台电脑上还是同一台电脑上的)多个页面打开同一网站的某个功能页面,那么如第一个问题所说,每一次访问(即打开页面)都是一个请求,服务器会为每个请求开辟一个线程,就是多线程。
3.多线程和并发之间是怎么一种关系?
多线程执行效率就是评判并发效果的好坏,高并发的概念就是在保证数据准确的情况下,减少进程所需操作的时间,特别经典的是页面访问服务器后,让服务器去修改数据库,如果你的数据库优化做的到位,那么查找数据并返回给客户端的时间将大大减少,我们知道对于一个热门网站的查询量是非常大的,然后一个服务器内存可以接收的进程数量也是有限的,这样一来,我们就说某一时间段内处理线程(访问请求)越多,那么并发效率就越好了。
4.对于经典的买票程序,是因为要操作共同资源而是用多线程技术,那么对于一些平常的查询显示功能就没必要用多线程技术。对于这里发起的多个查询请求,是多个线程吗?
买票程序应用与WEB就应该是多线程,共同资源存放在数据库中,和第三个问题的回答类似,这种商业性的站点更侧重于保证数据准确性,有时候我们修改的某项值会影响到别人的查询与增删,于是意外情况就产生了,例如在一个A线程(用户)正在修改某项值(买票)的情况下,要减少1张的剩余票总量是不准确的,因为当这个用户在方法中对获得的总剩余票数的同时(以获得总剩余票数,但还未减一),另一个B线程(用户)也进行买票,那么B获得的总剩余票数与A是相同的,因此他们如果同时被允许操作数据库的公共资源,那么当两人都只想完购票的减一操作时,第三线程或其他线程的查询剩余票量将只会看到原本减少2张剩余量,实际只少了一张,可以想象如果操作的线程越多,误差将会更大。因此数据库才会有事务,锁等等概念来提高确保数据准确性前提下的并发效率
相关文章推荐
- 工厂模式
- unity3D中 局部坐标,世界坐标以及屏幕坐标,transform变换坐标以及 变换方向心得
- Redis3.0.7 cluster/集群 安装配置教程
- Android 之startActivityForReult 与 onActivityResult简介
- ARM下汇编
- 第十周上机实践项目2:阅读程序,写出执行结果
- Mybatis 自动从数据库生成entity,mapping,dao接口
- 自定义toast样式和指定显示位置
- CSS学习之网格布局grid system - CSS: The Missing Manual
- Android 异步消息处理机制 让你深入理解 Looper、Handler、Message三者关系
- Python with Context Managers
- mysql
- 一个tomcat部署多个应用实例总结
- 盖得化工最新采集2
- PAT 1025
- Android 自定义Notification字体颜色适配
- shell命令操作ftp
- 箱子II_线段树
- numpy入门1
- 【Arduino官方教程第一辑】示例程序 4-7 读取ASCII字符串