小编goo*_*gle的帖子

什么时候调用Thread.currentThread()。interrupt()以及什么时候不调用?

建议在互联网上的多篇文章中不要吞咽InterruptedException。当我要重用同一个线程时,使用这样的线程池执行程序来执行此操作更有意义。

public static void main(String[] args) throws InterruptedException {

    ExecutorService executor = Executors.newSingleThreadExecutor();
    Future<?> future = executor.submit(() -> {
        printNumbers(); // first call
        printNumbers(); // second call
    });
    Thread.sleep(3_000);                                     
    executor.shutdownNow();  // will interrupt the task
    executor.awaitTermination(3, TimeUnit.SECONDS);
}

private static void printNumbers() {
    for (int i = 0; i < 10; i++) {
        System.out.print(i);
        try {
            Thread.sleep(1_000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt(); // preserve interruption status
            break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

上面来自DZone的代码示例。

但是在每次创建新线程的情况下:

Object LOCK = …
Run Code Online (Sandbox Code Playgroud)

java multithreading interrupt

7
推荐指数
2
解决办法
146
查看次数

在这种情况下,为什么 android 会杀死将光标保留在另一个进程上的内容提供者上的客户端进程?

我的应用程序在 Process1 中运行,并且我正在使用在 Process2 下运行的另一个应用程序提供的内容提供程序。当 Process2 终止时,会导致在 Process1 下运行的我的应用程序被终止。

09-14 23:31:52.583   782  1351 I ActivityManager: Killing 11797:com.example.myapp/1000 (adj 100): depends on provider com.example.exampleapp/com.example.exampleapp.MyContentProvider in dying proc com.example.exampleapp (adj 100)
09-14 23:31:52.585   782   812 W libprocessgroup: kill(-11797, 9) failed: No such process
09-14 23:31:52.585   782   812 I libprocessgroup: Successfully killed process cgroup uid 1000 pid 11797 in 0ms
09-14 23:31:52.623   368   368 I Zygote  : Process 11797 exited due to signal (9)
Run Code Online (Sandbox Code Playgroud)

我在 SO 中遇到了这个很好的答案,它基本上解释了当我们对内容提供商进行内容观察者与查询时会发生什么。

但我不清楚为什么 android 会杀死整个过程。为什么不能在应用程序级别处理这个问题,DeadObjectException …

android android-contentprovider contentobserver android-activitymanager contentproviderclient

5
推荐指数
0
解决办法
3049
查看次数