从Java java.util.concurrent.Semaphore文档中我不太清楚,如果semaphore.acquire()阻塞线程并且之后被InterruptedException中断,会发生什么.信号量值是否已降低,是否需要释放信号量?
目前我使用的代码如下:
try {
// use semaphore to limit number of parallel threads
semaphore.acquire();
doMyWork();
}
finally {
semaphore.release();
}
Run Code Online (Sandbox Code Playgroud)
或者我应该在acquire()期间发生InterruptedException时不要调用release()?
在Android 2.3.3上,我正在使用API方法批量导入我的一个SQLite表:
SQLiteDatabase.insert(String table,String nullColumnHack,ContentValues values)
它工作正常,但如果任何行存在数据库错误(例如约束错误),则会将完整的堆栈跟踪写入Android Logcat,这会迅速填满.
如何关闭此堆栈跟踪?
我已经处理了任何异常抛出但是Logcat正在SQLite库代码中被污染.
我担心移动设备的性能.
应该强制执行约束并且我将处理违规,但是Logcat中每次违规的20行堆栈跟踪乘以数百次违规是我想要关闭的.
不幸的是,我也无法使用Android Froyo引入的高级冲突处理,因为应用程序也必须在旧设备上运行.
干杯.