0%

关于Java Thread的一些认识

最近为了考取Java 7的Gold资格而补课,多线程这一块看了好长一段时间才算有点头绪。 下面几点算是心得吧。明白这些东西之后,join()也差不多可以理解了。

  • 主线程和主线程生成的子线程是两个独立的东西。start()之后都是各自奔向终点。
  • 如果子线程跑得快,主线程无法对它进行interrupt()操作。 因为人家已经结束了,你再发号施令已经晚了。
  • 被interrupt()的子线程不会就此终止,而是会恢复原来的执行。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    public class Sample11_5 {

    public static void main(String\[\] args) {

    try {
    ThreadA a = new ThreadA();
    a.start();
    System.out.println("main : sleep start.");
    Thread.sleep(1000);
    System.out.println("main : sleep end.");
    a.interrupt();
    } catch (InterruptedException e) {

    }
    }

    }

    class ThreadA extends Thread{
    @Override
    public void run() {
    try {
    System.out.println("Thread A : sleep start");
    Thread.sleep(5000);
    System.out.println("Thread A : sleep end");
    } catch (InterruptedException e) {
    System.out.println("Catch Thread A interrupted");
    }
    System.out.println("Thread A finished.");
    }
    }
    执行结果如下:

main : sleep start.
Thread A : sleep start
main : sleep end.
Catch Thread A interrupted
Thread A finished.