2 iwantadream iwantadream 于 2017.01.08 17:43 提问

JAVA线程/并发/请求的关系是怎么样的

多线程是不是 只是指通过new Runnable()再创建个线程 去干其它事情?
那我的项目里没有创建过其它线程是不是就是单线程环境?
类似 秒抢 的环境下,同时几个用户点击秒抢, 要实现互斥同步,需不需要用synchronized ()把关键代码括起来,这几个用户同时发出的请求是一个线程依序执行的吗?如果是那不就不需要用synchronized ()实现互斥同步吗?这几个概念有点模糊 混淆,请多指教 或者 推荐一些关于理清这方面的书籍或文章给我,谢谢

2个回答

a648422720
a648422720   2017.01.08 18:02
已采纳

如果你有用过socket就知道,很多用户同时发出请求,在一个时间点服务器只能处理一个用户的请求,如果你没有采用多线程的话,那么服务器只有处理完
当前用户的请求之后,才能处理下一个用户的请你。如果用了多线程,那么下个用户请求时就不用等到上个用户处理完再处理,而是可能某个时间点会切换到
当前用户的请求处理。如果多线程之间没有数据共享,那么可以不用synchronized。你可以去找些专门讲java多线程并发的书籍看看。

iwantadream
iwantadream 回复Lu_YuanWei: 谢谢
11 个月之前 回复
a648422720
a648422720 回复iwantadream:是啊
11 个月之前 回复
iwantadream
iwantadream 很多用户同时发出请求,那如果没有用Thread或者Runnable()的话,其实也是单线程吧?
11 个月之前 回复
u012976158
u012976158   2017.01.09 10:52

单线程和多线程的区别是在于 你每次是否操作同一个线程 如果是多线程 那么你读代码就会明白 每次 操作的是重新创建的线程
保证线程安全 有三种方式: 第一种 用ThreadLocal 定义变量 , 第二种 用同步锁 也就是你说的synchronized , 还有一种springmvc 和spring整合做项目的时候,注解的开发方式,就是使用局部变量,随着方法的消失而消失

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!