Environment
Dubbo version: master
Step to reproduce this issue

```java
public boolean isAllowable() {
        long now = System.currentTimeMillis();
        if (now > lastResetTime + interval) {
            token.set(rate);
            lastResetTime = now;
        }

        int value = token.get();
        boolean flag = false;
        while (value > 0 && !flag) {
            flag = token.compareAndSet(value, value - 1);
            value = token.get();
        }

        return flag;
    }
```

Expected Result
lastResetTime 共享变量是否有内存可见性问题

```java
 if (now > lastResetTime + interval) {
            token.set(rate);
            lastResetTime = now;
        }
```

有并发问题吗？

Assertions.assertTrue(defaultTPSLimiter.isAllowable(url, invocation));
        }
        final int tenTimesLimitRate = TEST_LIMIT_RATE * 10;
        url = url.addParameter(TPS_LIMIT_RATE_KEY, tenTimesLimitRate);
        for (int i = 1; i <= tenTimesLimitRate; i++) {
            Assertions.assertTrue(defaultTPSLimiter.isAllowable(url, invocation));
        }
        Assertions.assertFalse(defaultTPSLimiter.isAllowable(url, invocation));
    }
    @Test
    public void testMultiThread() throws InterruptedException {
        Invocation invocation = new MockInvocation();
        URL url = URL.valueOf("test://test");
        url = url.addParameter(INTERFACE_KEY, "org.apache.dubbo.rpc.file.TpsService");
        url = url.addParameter(TPS_LIMIT_RATE_KEY, 100);
        url = url.addParameter(TPS_LIMIT_INTERVAL_KEY, 100000);
        List<Task> taskList = new ArrayList<>();
        int threadNum = 50;
        CountDownLatch stopLatch = new CountDownLatch(threadNum);
        CountDownLatch startLatch = new CountDownLatch(1);
        for (int i = 0; i < threadNum; i++) {
            taskList.add(new Task(defaultTPSLimiter, url, invocation, startLatch, stopLatch));
        }
        startLatch.countDown();
        stopLatch.await();
        Assertions.assertEquals(taskList.stream().map(task -> task.getCount()).reduce((a, b) -> a + b).get(), 100);
    }
    class Task implements Runnable {
        private DefaultTPSLimiter defaultTPSLimiter;
        private URL url;