多线程是不是 只是指通过new Runnable()再创建个线程 去干其它事情?
那我的项目里没有创建过其它线程是不是就是单线程环境?
类似 秒抢 的环境下,同时几个用户点击秒抢, 要实现互斥同步,需不需要用synchronized ()把关键代码括起来,这几个用户同时发出的请求是一个线程依序执行的吗?如果是那不就不需要用synchronized ()实现互斥同步吗?这几个概念有点模糊 混淆,请多指教 或者 推荐一些关于理清这方面的书籍或文章给我,谢谢
如果你有用过socket就知道,很多用户同时发出请求,在一个时间点服务器只能处理一个用户的请求,如果你没有采用多线程的话,那么服务器只有处理完
当前用户的请求之后,才能处理下一个用户的请你。如果用了多线程,那么下个用户请求时就不用等到上个用户处理完再处理,而是可能某个时间点会切换到
当前用户的请求处理。如果多线程之间没有数据共享,那么可以不用synchronized。你可以去找些专门讲java多线程并发的书籍看看。
单线程和多线程的区别是在于 你每次是否操作同一个线程 如果是多线程 那么你读代码就会明白 每次 操作的是重新创建的线程
保证线程安全 有三种方式: 第一种 用ThreadLocal 定义变量 , 第二种 用同步锁 也就是你说的synchronized , 还有一种springmvc 和spring整合做项目的时候,注解的开发方式,就是使用局部变量,随着方法的消失而消失