- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment

* Dubbo version: 2.7.3-SNAPSHOT
* Operating System version: macOs
* Java version: JDK 1.8

### Steps to reproduce this issue

1. Assume Demo interface have sayHello and sayHi method. 
```
<dubbo:reference id="demoService" interface="com.ctrip.Demo" timeout="1000">
  <dubbo:method name="sayHello">
    <dubbo:parameter key="timeout" value="800"/>
  </dubbo:method>
</dubbo:reference>
```
2. Make a sync call to sayHello, the timeout is 800 but not 1000. We have not get method timeout from the url.

```
asyncResult.get(getUrl().getParameter(TIMEOUT_KEY, DEFAULT_TIMEOUT), TimeUnit.MILLISECONDS);
```

Pls. provide [GitHub address] to reproduce this issue.

### Expected Result

The timeout should be 1000 for sayHello.

### Actual Result

The timeout is 800 for sayHello.

If there is an exception, please attach the exception trace:

```
Just put your stack trace here!
```

throw new RpcException("Interrupted unexpectedly while waiting for remoting result to return!  method: " + invocation.getMethodName() + ", provider: " + getUrl() + ", cause: " + e.getMessage(), e);
        } catch (ExecutionException e) {
            Throwable t = e.getCause();
            if (t instanceof TimeoutException) {
                throw new RpcException(RpcException.TIMEOUT_EXCEPTION, "Invoke remote method timeout. method: " + invocation.getMethodName() + ", provider: " + getUrl() + ", cause: " + e.getMessage(), e);
            } else if (t instanceof RemotingException) {
                throw new RpcException(RpcException.NETWORK_EXCEPTION, "Failed to invoke remote method: " + invocation.getMethodName() + ", provider: " + getUrl() + ", cause: " + e.getMessage(), e);
            }
        } catch (Throwable e) {
            throw new RpcException(e.getMessage(), e);
        }
        return asyncResult;
    }
    @Override
    public URL getUrl() {
        return invoker.getUrl();
    }
    @Override
    public boolean isAvailable() {
        return invoker.isAvailable();
    }
    @Override
    public void destroy() {
        invoker.destroy();
    }
    public Invoker<T> getInvoker() {
        return invoker;
    }
}