synchronized控制并发问题

问题描述

synchronized控制并发问题
public void saveCoupons() {
HttpServletRequest request=ServletActionContext.getRequest();
HttpServletResponse response = ServletActionContext.getResponse();
synchronized (this)

{

System.out.println(DateFormat.getDateTime());//yyyy-MM-dd HH:mm:ss的日期字符串形式返回
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

当两个请求并发访问这个action时,输出两个完全一样的时间,并没有间隔1000毫秒,感觉synchronized没起作用求大神指导

解决方案

同步,是需要放在线程中,如果在同一线程中肯定是没有意义的。

解决方案二:
你的意思是 两个并发请求 是在同一个线程内吗 麻烦详细解答一下,最近这里搞的我头都大了,谢谢

时间: 2024-09-10 16:12:16

synchronized控制并发问题的相关文章

线程同步工具(六)控制并发阶段性任务的改变

声明:本文是< Java 7 Concurrency Cookbook>的第三章, 作者: Javier Fernández González 译者:郑玉婷 控制并发阶段性任务的改变 Phaser 类提供每次phaser改变阶段都会执行的方法.它是 onAdvance() 方法.它接收2个参数:当前阶段数和注册的参与者数:它返回 Boolean 值,如果phaser继续它的执行,则为 false:否则为真,即phaser结束运行并进入 termination 状态. 如果注册参与者为0,此方法

线程同步工具(一)控制并发访问资源

声明:本文是< Java 7 Concurrency Cookbook>的第三章, 作者: Javier Fernández González 译者:郑玉婷     控制并发访问资源 这个指南,你将学习怎样使用Java语言提供的Semaphore机制.Semaphore是一个控制访问多个共享资源的计数器. Semaphore的内容是由Edsger Dijkstra引入并在 THEOS操作系统上第一次使用. 当一个线程想要访问某个共享资源,首先,它必须获得semaphore.如果semaphor

java web-javaweb项目部署在多个节点,怎么控制并发

问题描述 javaweb项目部署在多个节点,怎么控制并发 问题场景: 现在一张公有表的数据,在页面列表中展示,登入用户可直接点击按钮分配给自己. 怎么控制同一条数据只分配给一个用户. 解决方案 楼上的差不多了就. 点击分配的时候,做个ajax验证,查询一下要分配的东西 是不是已经有人分配了,已经分配过的,提示已经有人占用. 然后,再保险点儿的话,就给分配的service层加上同步锁.最后还可以给表的列加上锁....... 解决方案二: 你对这条数据做个标识,如果已分配给用户,你就做个标识,完了下

线程同步工具(二)控制并发访问多个资源

声明:本文是< Java 7 Concurrency Cookbook>的第三章, 作者: Javier Fernández González 译者:郑玉婷 控制并发访问多个资源 在并发访问资源的控制中,你学习了信号量(semaphores)的基本知识. 在上个指南,你实现了使用binary semaphores的例子.那种semaphores是用来保护访问一个共享资源的,或者说一个代码片段每次只能被一个线程执行.但是semaphores也可以用来保护多个资源的副本,也就是说当你有一个代码片段

java并发编程学习:用 Semaphore (信号量)控制并发资源

并发编程这方面以前关注得比较少,恶补一下,推荐一个好的网站:并发编程网 - ifeve.com,上面全是各种大牛原创或编译的并发编程文章. 今天先来学习Semaphore(信号量),字面上看,根本不知道这东西是干啥的,借用 并发工具类(三)控制并发线程数的Semaphore一文中的交通红绿信号灯的例子来理解一下: 一条4车道的主干道,假设100米长,每辆车假设占用的长度为10米(考虑到前后车距),也就是说这条道上满负载运行的话,最多只能容纳4*(100/10)=40辆车,如果有120辆车要通过的

Nodejs实战心得之eventproxy模块控制并发_node.js

目标 建立一个 lesson4 项目,在其中编写代码. 代码的入口是 app.js,当调用 node app.js 时,它会输出 CNode(https://cnodejs.org/ ) 社区首页的所有主题的标题,链接和第一条评论,以 json 的格式. 输出示例: [ { "title": "[公告]发招聘帖的同学留意一下这里", "href": "http://cnodejs.org/topic/541ed2d05e28155f24

并发工具类(三)控制并发线程数的Semaphore

简介 Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源.很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同时有一百辆车在这条路上行使,其他的都必须在路口等待,所以前一百辆车会看到绿灯,可以开进这条马路,后面的车会看到红灯,不能驶入XX马路,但是如果前一百辆中有五辆车已经离开了XX马路,那么后面就允许有5辆车驶入马路,这个例子里说的车就是线程,驶入马路就表

控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[上篇]

WCF是一个基于多线程的消息监听.接收和处理框架体系,能够同时应付来自相同或者不同客户端的服务调用请求,并提供完善的同步机制确保状态的一致性.一方面,我们期望WCF服务端能够处理尽可能多的并发请求,但是资源的有限性决定了并发量有一个最大值.如果WCF不控制进入消息处理系统的并发量,试图处理所有抵达的并发请求,一旦超过了这个临界值,整个服务端将会由于资源耗尽而崩溃. 所以,我们需要在WCF的消息接收系统和消息处理系统之间设置一道道屏障,将流入消息处理系统的请求控制到一个最佳的范围,以实现对现有资源

控制并发访问的三道屏障: WCF限流(Throttling)体系探秘[下篇]

通过<上篇>介绍,我们知道了如何通过编程和配置的方式设置相应的最大并发量,从而指导WCF的限流体系按照你设定的值对并发的服务调用请求进行限流控制.那么,在WCF框架体系内部,整个过程是如何实现的呢?这就是本篇文章需要为你讲述的内容.实际上,整个限流控制体系,主要涉及到两个对象:信道分发器(ChannelDispatcher)和ServiceThrottle. 一.信道分发器(ChannelDispatcher)与ServiceThrottle 从服务端整个消息监听.接收.分发和处理框架体系角度