May*_*ybe 4 java multithreading
"dashboardRefreshContainer-8" - Thread t@1384
java.lang.Thread.State: RUNNABLE
at sun.util.calendar.ZoneInfo.getLastRule(ZoneInfo.java:638)
- locked <4d70153e> (a sun.util.calendar.ZoneInfo)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:275)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:225)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2024)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1996)
at java.util.Calendar.setTimeInMillis(Calendar.java:1109)
at java.util.Calendar.setTime(Calendar.java:1075)
"TP-Processor38" - Thread t@158
java.lang.Thread.State: RUNNABLE
at sun.util.calendar.ZoneInfo.getLastRule(ZoneInfo.java:638)
- locked <4d70153e> (a sun.util.calendar.ZoneInfo)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:275)
at sun.util.calendar.ZoneInfo.getOffsets(ZoneInfo.java:225)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2024)
at java.util.GregorianCalendar.computeFields(GregorianCalendar.java:1996)
at java.util.Calendar.setTimeInMillis(Calendar.java:1109)
at java.util.Calendar.setTime(Calendar.java:1075)
Run Code Online (Sandbox Code Playgroud)
线程都是Runnable,它们拥有相同的锁.两个线程都可以锁定相同的地址,而它们都是RUNNABLE吗?这是一个JRE错误吗?
nos*_*sid 11
该问题仅存在于线程转储中.实际上,在任何时间点,锁只由一个线程保持.但是,线程转储显示具有相同锁的两个不同线程,因为它不是原子的.
可以使用以下程序轻松复制该行为:
public class Test {
public static void main(String[] args) {
Runnable runnable = new Runnable() {
public void run() {
for (;;) {
synchronized (this) { }
}
}
};
new Thread(runnable).start();
new Thread(runnable).start();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
944 次 |
| 最近记录: |