[BAEL-4296] Handling InterruptedException in Java (#10677)
[BAEL-4296] Handling InterruptedException in Java Co-authored-by: MeenaGawande <MeenaGawande@users.noreply.github.com>
This commit is contained in:
parent
6a3ba86878
commit
cbb5548525
|
@ -0,0 +1,10 @@
|
||||||
|
package com.baeldung.concurrent.interrupt;
|
||||||
|
|
||||||
|
public class CustomInterruptedException extends Exception {
|
||||||
|
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
CustomInterruptedException(String message) {
|
||||||
|
super(message);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
package com.baeldung.concurrent.interrupt;
|
||||||
|
|
||||||
|
public class InterruptExample extends Thread {
|
||||||
|
|
||||||
|
public static void propagateException() throws InterruptedException {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
if (Thread.interrupted()) {
|
||||||
|
throw new InterruptedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean restoreTheState() {
|
||||||
|
InterruptExample thread1 = new InterruptExample();
|
||||||
|
thread1.start();
|
||||||
|
thread1.interrupt();
|
||||||
|
return thread1.isInterrupted();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void throwCustomException() throws Exception {
|
||||||
|
|
||||||
|
Thread.sleep(1000);
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
if (Thread.interrupted()) {
|
||||||
|
throw new CustomInterruptedException("This thread was interrupted");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Boolean handleWithCustomException() throws CustomInterruptedException{
|
||||||
|
try {
|
||||||
|
Thread.sleep(1000);
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
} catch (InterruptedException e) {
|
||||||
|
Thread.currentThread().interrupt();
|
||||||
|
throw new CustomInterruptedException("This thread was interrupted...");
|
||||||
|
}
|
||||||
|
return Thread.currentThread().isInterrupted();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.baeldung.concurrent.interrupt;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class InterruptExampleUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenPropagateException_thenThrowsInterruptedException() {
|
||||||
|
assertThrows(InterruptedException.class, () -> InterruptExample.propagateException());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenRestoreTheState_thenReturnsTrue() {
|
||||||
|
assertTrue(InterruptExample.restoreTheState());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenThrowCustomException_thenContainsExpectedMessage() {
|
||||||
|
Exception exception = assertThrows(CustomInterruptedException.class, () -> InterruptExample.throwCustomException());
|
||||||
|
String expectedMessage = "This thread was interrupted";
|
||||||
|
String actualMessage = exception.getMessage();
|
||||||
|
|
||||||
|
assertTrue(actualMessage.contains(expectedMessage));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void whenHandleWithCustomException_thenReturnsTrue() throws CustomInterruptedException{
|
||||||
|
assertTrue(InterruptExample.handleWithCustomException());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue