JAVA多线程编程核心技术-学习笔记

  1. 进程和线程
    1. 进程是操做系统拓扑管理的基本单位
    2. 线程是进程中,独立运行的子任务
  2. 线程启动
    1. 在多线程中, 代码的顺序 , **[不是]**线程的执行顺序.
    2. start()和run()
      1. start()是启动新线程执行方法,异步
      2. run()是当前线程执行方法,同步.和调用其余正常方法同样
    3. Thread和Runnable
      1. 两种方式在工做时性质是同样的, 没有本质区别
      2. Runable 接口
        1. 理解: 异步类的标识及规范
        2. 实现此接口,并重写run()方法.才是异步方法
        3. 须要配合Thread类,才能实现任务调度,异步执行
      3. Thread
        1. 理解: 线程调度,线程状态
          1. 调度
            1. 启动
            2. 暂停
            3. ......
          2. 状态
            1. 属性: 名称,ID,状态
            2. 实时: 是否存活,是否被打断
            3. 等等
          3. 其余一些管理功能接口

          这么看来,Thread和Runnable是彻底不一样的两个东西.Thread实现Runnable真的是画蛇添足.安全

        2. Thread类实现了Runnable接口
        public class Thread implements Runnable
        Thread包含Runnable接口功能,但不如Runnable灵活. 继承Thread类,也能够实现run()方法,但单继承局限.
  3. 数据共享
    1. 线程间的对象数据不共享

    从JVM的角度去理解这个问题,变量的指针是存在虚拟机栈中的,而虚拟机栈是线程隔离的,每一个线程,都是新的栈帧.相互隔离.多线程

    1. 静态数据可共享

    静脉常量在方法区中 , 线程直接访问方法区, 方法区线程共享 .异步

  4. 如何使线程暂停
  5. 如何使线程中止
  6. 线程优先级
  7. 线程安全相关问题
相关文章
相关标签/搜索