FastSharedPreferences
FastSharedPreferences copied to clipboard
读写锁容易出现死锁导致ANR
"main" prio=5 tid=1 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x74ffe1f0 self=0xa3ad1000 | sysTid=28165 nice=-10 cgrp=default sched=0/0 handle=0xa7e49494 | state=S schedstat=( 14845404648 2199071798 23355 ) utm=1379 stm=104 core=3 HZ=100 | stack=0xbb59d000-0xbb59f000 stackSize=8MB | held mutexes= at java.lang.Object.wait(Native method)
- waiting on <0x05c5a20f> (a java.lang.Object) at java.lang.Thread.parkFor$(Thread.java:2137)
- locked <0x05c5a20f> (a java.lang.Object) at sun.misc.Unsafe.park(Unsafe.java:358) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:993) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1307) at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:729) at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.put(FastSharedPreferences.java:220) at comxxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putString(FastSharedPreferences.java:185) at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putString(FastSharedPreferences.java:176)
"ThreadExecutor-10" prio=5 tid=69 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x138c0220 self=0x7f08cc00 | sysTid=8919 nice=0 cgrp=default sched=0/0 handle=0x80079970 | state=S schedstat=( 2947459 23034500 23 ) utm=0 stm=0 core=1 HZ=100 | stack=0x7ff76000-0x7ff78000 stackSize=1042KB | held mutexes= at java.lang.Object.wait(Native method)
- waiting on <0x086d9300> (a java.lang.Object) at java.lang.Thread.parkFor$(Thread.java:2137)
- locked <0x086d9300> (a java.lang.Object) at sun.misc.Unsafe.park(Unsafe.java:358) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868) at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireShared(AbstractQueuedSynchronizer.java:993) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireShared(AbstractQueuedSynchronizer.java:1307) at java.util.concurrent.locks.ReentrantReadWriteLock$ReadLock.lock(ReentrantReadWriteLock.java:729) at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.put(FastSharedPreferences.java:220) at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putInt(FastSharedPreferences.java:197) at com.xxx.fastsharedpreferences.FastSharedPreferences$FspEditor.putInt(FastSharedPreferences.java:176)
"pool-2-thread-4" prio=5 tid=19 Waiting | group="main" sCount=1 dsCount=0 flags=1 obj=0x12d00ec8 self=0x9c29d800 | sysTid=8750 nice=0 cgrp=default sched=0/0 handle=0x86d8f970 | state=S schedstat=( 688124 2862501 5 ) utm=0 stm=0 core=0 HZ=100 | stack=0x86c8c000-0x86c8e000 stackSize=1042KB | held mutexes= at java.lang.Object.wait(Native method)
- waiting on <0x0455d1e7> (a java.lang.Object) at java.lang.Thread.parkFor$(Thread.java:2137)
- locked <0x0455d1e7> (a java.lang.Object) at sun.misc.Unsafe.park(Unsafe.java:358) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:190) at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:868) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:900) at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1223) at java.util.concurrent.locks.ReentrantReadWriteLock$WriteLock.lock(ReentrantReadWriteLock.java:950) at com.fj.smartkit.fastsharedpreferences.FastSharedPreferences$FspEditor$SyncTask.run(FastSharedPreferences.java:274) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:764)