小编Ern*_*nie的帖子

如果semaphore.acquire()得到InterruptedException,需要semaphore.relase()吗?

从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()?

java semaphore interrupted-exception

11
推荐指数
2
解决办法
9486
查看次数

如何防止Android SQLite将堆栈跟踪转储到logcat?

在Android 2.3.3上,我正在使用API​​方法批量导入我的一个SQLite表:

SQLiteDatabase.insert(String table,String nullColumnHack,ContentValues values)

它工作正常,但如果任何行存在数据库错误(例如约束错误),则会将完整的堆栈跟踪写入Android Logcat,这会迅速填满.

如何关闭此堆栈跟踪?

我已经处理了任何异常抛出但是Logcat正在SQLite库代码中被污染.

我担心移动设备的性能.

  • 导入的事务已经启用
  • 预加载的DB是不可能的,因为数据可能会改变

应该强制执行约束并且我将处理违规,但是Logcat中每次违规的20行堆栈跟踪乘以数百次违规是我想要关闭的.

不幸的是,我也无法使用Android Froyo引入的高级冲突处理,因为应用程序也必须在旧设备上运行.

干杯.

sqlite android stack-trace logcat

2
推荐指数
1
解决办法
1368
查看次数