<li>
<a href="/home/articles/how_to_foo">How to foo</a>
</li>
PageSpeed Insights表示,上述元素的最大内容绘制时间为 3,220 毫秒
TTFB 600 ms
Load Delay 0 ms
Load Time 0 ms
Render Delay 2,620 ms
有人能提供一些关于如何调查此事的提示吗?
[更新于 2025-04-10]
<li>
<a href="/home/articles/how_to_foo">How to foo</a>
</li>
PageSpeed Insights表示,上述元素的最大内容绘制时间为 3,220 毫秒
TTFB 600 ms
Load Delay 0 ms
Load Time 0 ms
Render Delay 2,620 ms
有人能提供一些关于如何调查此事的提示吗?
[更新于 2025-04-10]
我们有一个任务要执行,dummyMethod
。
private synchronized void dummyMethod(){
Log.d("debug", "do nothing in dummyMethod()")
}
我们多次运行该任务。
private synchronized void fooMethod() throws InterruptedException{
for (int i = 0; i < 10; i++){
dummyMethod();
}
Thread.sleep(10000)
Log.d("debug", "fooMethod() finished")
}
通过上面的代码,synchronizeddummyMethod()
立即执行了 10 次。
然而,对于下面的代码,dummyMethod()
仅立即调用一次,并且只有在fooMethod()
完成后才完成并执行 9 次。
private synchronized void fooMethod() throws InterruptedException{
new Thread(()->{
for (int i = 0; i < 10; i++){
dummyMethod();
}
}).start();
Thread.sleep(10000)
Log.d("debug", "fooMethod() finished")
}
在这种情况下,logcat 显示:
Long monitor contention with owner main (18077) at void ...fooMethod()(MainActivity.java:1106) waiters=0 in void ...MainActivity.dummyMethod() for 10.001s
我认为在后一种情况下它不会阻塞新线程。有人能解释一下吗?一个同步方法如何在新线程中多次异步运行另一个同步方法?