zoukankan      html  css  js  c++  java
  • Java多线程技能(读书笔记:《Java多线程编程核心技术》)

    一个程序的执行代表一个进程,线程是一个进程里面的独立运行的子任务。

    线程各个状态,图片截取自《Java多线程编程核心技术》。

    (start顺序不代表运行启动顺序,从上图可以看出start后线程只是编程了就绪状态,具体执行顺序要看cpu分配)

    线程的两种实现方式:

    • 继承Thread类:
     1 public class MyThread extends Thread {
     2     @Override
     3     public void run() {
     4         super.run();
     5         System.out.println();
     6     }    
     7 }
     8 
     9 MyThread thread = new MyThread();
    10 thread.start();

    注意对于同一个线程,多次调用它的start方法,会出现异常IllegalThreadStateException。

    • 实现接口的方式(Runnable、Callable):
     1 pulbic class MyRunnable implements Runnable {
     2 
     3     @Override
     4 
     5     public void run() {
     6         System.out.println();
     7     }
     8 
     9 }
    10 
    11 Runnable runnable = new MyRunnable();
    12 Thread thread = new Thread(runnable);
    13 thread.start();

    如果使用实现带有返回值的Callable接口,需要使用FutureTask。

     1 public class MyCallable implements Callable<String> {
     2     @Override
     3     public String call() throws Exception {
     4         return "call";
     5     }
     6 }
     7 
     8 MyCallable myCallable = new MyCallable();
     9 FutureTask<Integer> futureTask = new FutureTask<>(myCallable);
    10 Thread thread = new Thread(futureTask);
    11 thread.start();
    12 
    13 String result = future.get();   //阻塞,直到出现运行结果并返回

    由于Java不支持多继承的方式,为了尽量改变这种局限性,推荐使用实现接口的方式。

    判断线程是否终止的方法:

    public static boolean interrupted();
    public boolean isInterrupted();

    测试线程是否已经中断(可以判断当前线程Thread.interrupted()),interrupted方法会清除线程的终止状态。isInterrupted方法,不清除状态。

    使用interrupt()后,处于停止状态的线程,不一定会直接退出。

    interrupt方法只是修改线程处于停止状态,退出线程需要结合异常或者return使用。

    (线程停止的方法还有stop方法,但是被废弃了,由于stop方法会让线程暴力停止,可能导致不完整的残废数据。)

  • 相关阅读:
    jacman主题分页出现问题(Next<span></span>)
    后会有期(非技术)
    再谈前端性能优化
    emmet常用指令组合
    imagemagick在windows下安装(转,有改动)
    nth-child和蝉原则实现的奇妙随机效果(译)
    flex布局浅谈和实例
    css命名那些事儿
    chrome开发者工具浅析--timeline
    浏览器历史和发展趋势浅析
  • 原文地址:https://www.cnblogs.com/avalon-merlin/p/9213135.html
Copyright © 2011-2022 走看看