zoukankan      html  css  js  c++  java
  • 【java基础知识】并发

    • 要执行的任务runnable、驱动任务执行的线程thread。thread自身不执行任何操作,只是驱动赋予它的任务。

    new Thread(new Task()).start()

    Executor执行器管理线程,允许管理异步任务的执行,无须显式管理线程的生命周期,其有多种类型。

    Executors.newCachedThreadPool();为每个任务创建一个线程,每个任务分配一次线程开销

    Executors.newFixedThreadPool(num);预先一次性进行线程分配,一次线程分配开销

    Executors.newSinleThreadExecutor();序列化提交的任务,线程数为1

    public class Liftoff implements Runnable {

     @Override  public void run() { 

    for (int i = 0; i < 3; i++) {    

      System.out.println("hello " + i);    

    Thread.yield();  

     }  }

    }

    public class TestParallel {
     public static void main(String[] args) {
      ExecutorService executor = Executors.newCachedThreadPool( );//替换不同Executor结果不同
      for (int i = 0; i < 2; i++) {
       executor.execute(new Liftoff());
       String threadName = Thread.currentThread().getName();
       System.out.println("Hello " + threadName);
      }
      executor.shutdown();
     }
    }

    • 不同执行器结果展示

    SingleThreadExecutor:main 0  main 1 2 0 1 2

    FixedThreadPool:0 main 1 2 main 0 1 2 

    CachedThreadPool:main 0 1 2 main 0 1 2

    • 任务产生方式:

    runnable无返回值,对应run()

    Callable允许返回值和异常,对应call()

    • 优先级

    常用优先级类型:MAX_PRIORITY 、MIN_PRIORITY 、 NORM_PRIORITY

    • yield和sleep

    yield向线程调度器暗示工作已完成差不多,可以让其他线程使用CPU了,也是在建议具有相同优先级的其他线程可以运行

    • 后台线程daemon

    指程序运行时后台提供的一种通用服务的线程,这种线程不属于程序中不可或缺的部分。非后台线程结束时,程序也就终止,同时杀死进程中所有后台进程。

    在线程启动之前调用setDaemon()才能把他设置为后台线程

  • 相关阅读:
    5. Fragment详解
    4. 2D绘制与控件绘制
    3、用继承和组合方式定制控件
    2、复杂布局实现
    1、android源代码下载与跟踪
    19、照相机技术
    18、GPS技术
    17、Wi-Fi Direct
    16、蓝牙技术
    15、NFC技术:使用Android Beam技术传输文件
  • 原文地址:https://www.cnblogs.com/wygyxrssxz/p/4537082.html
Copyright © 2011-2022 走看看