TestInterrupt.java 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import java.util.concurrent.*;
  2. public class TestInterrupt {
  3. public static void main(String[] args) {
  4. InterruptThread thread = new InterruptThread();
  5. thread.start();
  6. try {
  7. Thread.sleep(500);
  8. } catch (Exception e) {
  9. e.printStackTrace();
  10. }
  11. thread.interrupt();
  12. ExecutorService executor = Executors.newFixedThreadPool(1);
  13. executor.execute(() -> {
  14. System.out.println("Thread start!");
  15. try {
  16. Thread.sleep(1000);
  17. } catch (Exception e) {
  18. e.printStackTrace();
  19. }
  20. });
  21. executor.shutdownNow();
  22. executor = Executors.newFixedThreadPool(1);
  23. Future<?> future = executor.submit(new InterruptThread());
  24. future.cancel(true);
  25. executor.shutdown();
  26. }
  27. }
  28. class InterruptThread extends Thread {
  29. @Override
  30. public void run() {
  31. while (!interrupted()) {
  32. System.out.println("Thread is running.");
  33. try {
  34. Thread.sleep(1000);
  35. } catch (Exception e) {
  36. e.printStackTrace();
  37. return;
  38. }
  39. }
  40. System.out.println("Thread end.");
  41. }
  42. }