小编diy*_*diy的帖子

为什么wait()始终处于同步块中

我们都知道,为了调用Object.wait(),这个调用必须放在synchronized块中,否则IllegalMonitorStateException抛出一个.但是这个限制的原因是什么?我知道wait()释放监视器,但为什么我们需要通过使特定块同步显式获取监视器,然后通过调用释放监视器wait()

如果可以wait()在同步块之外调用,保留它的语义 - 暂停调用程序线程,可能造成的损害是什么?

java concurrency multithreading wait

250
推荐指数
3
解决办法
13万
查看次数

亚马逊Kinesis模拟器

我们正在评估实时事件处理引擎(如twitter风暴)其中一个选项是最近发布的Amazon Kinesis.

我想知道是否有任何类型的模拟器/沙箱环境可以允许使用kinesis一点点而不需要设置AWS账户并支付使用服务的费用

先感谢您

amazon-web-services amazon-kinesis

7
推荐指数
1
解决办法
949
查看次数

Spring @ExceptionHandler 除非主体为空,否则不会返回内容

我正在使用 Spring @ControllerAdvice 来处理异常

@ControllerAdvice
public class RestResponseEntityExceptionHandler extends ResponseEntityExceptionHandler {


    @ExceptionHandler(value = { DataIntegrityViolationException.class})
    @ResponseBody
    public ResponseEntity<String> unknownException(Exception ex, WebRequest req) {
        return new ResponseEntity<>(ex.getCause().getMessage(), new HttpHeaders(), HttpStatus.INTERNAL_SERVER_ERROR);

    }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当异常发生时(当我通过 swagger 发送请求时),我没有收到预期的异常消息,但是:

{"error": "no response from server"}
Response Code : 0
Response Body : No Content
Run Code Online (Sandbox Code Playgroud)

我可以在调试模式下清楚地看到调用了注释的方法@ExceptionHandler

我已经尝试过方法返回类型、@ResponseBody注释@ResponseStatus和其他一些想到的东西,但似乎当我返回ResponseEntity没有主体的 a 时,我只会得到一些非空响应,例如

 ResponseEntity.noContent().build()
Run Code Online (Sandbox Code Playgroud)

或者

ResponseEntity.ok().build()
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我得到正确的 http 代码和一些标头

请告诉我我做错了什么

  • 春季版本4.3.9
  • 春季启动版本1.5.4

先感谢您

UPD

我继续进行实验,这是对我有用的解决方案。它非常接近答案之一 - 我会将其标记为已接受

简而言之,我刚刚创建了自己的 dto 类,用我感兴趣的异常详细信息填充了实例,并直接返回了我的代码

@ExceptionHandler(value = { DataIntegrityViolationException.class}) …
Run Code Online (Sandbox Code Playgroud)

java spring exception spring-mvc

5
推荐指数
1
解决办法
5625
查看次数