我实现了MyInputStream.read()并注意到一个InterruptedException可能发生在这个函数中。经过一番搜索,我发现捕获InterruptedException并重新抛出InterruptedIOException是很常见的,例如:try{...}catch(InterruptedExceptione){//Thread.currentThread().interrupt();//但只有大约50%的代码示例执行Thread.currentThread().interrupt()。嗯,同意theworstthingyoucandowithInterruptedE
两者都会导致程序停止执行。不过,很明显,这种情况的发生方式肯定存在一些差异。它们是什么? 最佳答案 总结thread.interrupt()不会停止线程。它用于多线程程序中的协调。除非您确切知道自己在做什么,否则不要使用它。抛出RuntimeException将(通常)终止线程,但不一定终止程序。System.exit(int)几乎总是终止程序并返回状态码。在不寻常的情况下,System.exit(int)可能不会真正停止程序。另一方面,Runtime.getRuntime().halt(int)总是这样。线程中断恐怕你的第一句话是
我的代码中有这个Thread.currentThread().sleep(x);Eclipse告诉我使用静态的Thread.sleep(x);相反,为什么?有什么区别,这两种方法在功能上有什么区别吗? 最佳答案 只有一种方法,不是两种,而且是静态的。虽然您可以通过实例引用调用静态方法,但它的风格并不好。它表明程序员认为他或她正在调用实例方法。困惑的程序员可能会认为他或她可以使另一个线程(不是当前线程)以这种方式hibernate,而事实并非如此。你的两行代码做同样的事情,但第二行是更好的风格。
我的代码中有这个Thread.currentThread().sleep(x);Eclipse告诉我使用静态的Thread.sleep(x);相反,为什么?有什么区别,这两种方法在功能上有什么区别吗? 最佳答案 只有一种方法,不是两种,而且是静态的。虽然您可以通过实例引用调用静态方法,但它的风格并不好。它表明程序员认为他或她正在调用实例方法。困惑的程序员可能会认为他或她可以使另一个线程(不是当前线程)以这种方式hibernate,而事实并非如此。你的两行代码做同样的事情,但第二行是更好的风格。
为什么要在catchblock中调用Thread.currentThread.interrupt()方法? 最佳答案 这样做是为了保持状态。当您捕获InterruptedException并将其吞下时,您基本上可以防止任何更高级别的方法/线程组注意到中断。这可能会导致问题。通过调用Thread.currentThread().interrupt(),你设置了线程的中断标志,所以更高级别的中断处理程序会注意到它并可以适本地处理它。JavaConcurrencyinPractice在第7.1.3章:响应中断中更详细地讨论了这一点。它的规
为什么要在catchblock中调用Thread.currentThread.interrupt()方法? 最佳答案 这样做是为了保持状态。当您捕获InterruptedException并将其吞下时,您基本上可以防止任何更高级别的方法/线程组注意到中断。这可能会导致问题。通过调用Thread.currentThread().interrupt(),你设置了线程的中断标志,所以更高级别的中断处理程序会注意到它并可以适本地处理它。JavaConcurrencyinPractice在第7.1.3章:响应中断中更详细地讨论了这一点。它的规
1.什么是死锁在多线程环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况称为死锁在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,不再往下执行。我们只能通过中止并重启的方式来让程序重新执行。2.造成死锁的原因当前线程拥有其他线程需要的资源当前线程等待其他线程已拥有的资源都不放弃自己拥有的资源3.死锁的必要条件3.1互斥进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该
1.什么是死锁在多线程环境中,多个进程可以竞争有限数量的资源。当一个进程申请资源时,如果这时没有可用资源,那么这个进程进入等待状态。有时,如果所申请的资源被其他等待进程占有,那么该等待进程有可能再也无法改变状态。这种情况称为死锁在Java中使用多线程,就会有可能导致死锁问题。死锁会让程序一直卡住,不再往下执行。我们只能通过中止并重启的方式来让程序重新执行。2.造成死锁的原因当前线程拥有其他线程需要的资源当前线程等待其他线程已拥有的资源都不放弃自己拥有的资源3.死锁的必要条件3.1互斥进程要求对所分配的资源(如打印机)进行排他性控制,即在一段时间内某资源仅为一个进程所占有。此时若有其他进程请求该