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

  • 进程和线程
    1. 进程是操作系统拓扑管理的基本单位
    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()方法,但单继承局限.
  • 数据共享
    1. 线程间的对象数据不共享

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

    1. 静态数据可共享

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

  • 如何使线程暂停
  • 如何使线程停止
  • 线程优先级
  • 线程安全相关问题
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章