由于并发性不当,服务器没有正常关闭

时间:2017-08-05 15:13:01

标签: java concurrency grizzly

我有一个基于Grizzly NIO的简单服务器。我按照以下方式开始/关闭它,请注意关闭方法附近的注释:

{
  "response": [
    1000,
    {
      "id": ,
      "date": ,
      "owner_id": ,
      "from_id": ,
      "post_type": "post",
      "text": "blabla",
      "attachment": {
        "type": "photo",
        "photo": {
          "pid": ,
          "aid": -7,
          "owner_id": 
        }
      },
      "attachments": [
        {
          "type": "photo",
          "photo": {
          }
        },
        {
          "type": "link",
          "link": {
            "url": "",
            "title": "",
            "description": "",
            "target": "external"
          }
        }
      ],
      "post_source": {
        "type": "vk"
      },
      "comments": {
        "count": 0,
        "groups_can_post": true,
        "can_post": 1
      },
    },
    {
      "id": ,
      "date": ,
      "owner_id": ,
      "from_id": ,
      "post_type": "post",
      "text":    "blabla",
      "attachment": {
        "type": "link",
        "link": {
          "url": "",
          "title": "",
          "description": "",
          "target": "external",
          "
        }

当我终止服务器时,它会立即关闭,因为永远不会达到server.shutdown()行而不是正常的方式。就是说,我试图实现一个关闭钩子,但它也没有被调用。我怀疑我的join()实现但不确定。任何帮助实现优雅关闭将不胜感激。

1 个答案:

答案 0 :(得分:1)

Thread.currentThread().join()将永远封锁。它正在等待自己完成,但无法完成,因为它正在等待自己完成。