------------恢复内容开始------------

java 多线程 快速入门

1. 进程和线程

  什么是进程?

    进程是正在运行的程序它是线程的集合

    进程中一定有一个主线程

    一个操作系统可以有多个线程

   什么是线程?

    线程就是独立的运行一条执行路径

    一个独立的执行单元 , 一个执行流程

  为什么要使用多线程?

    多线程提高程序效率 , 使用多线程 , 每个线程互补影响

2.创建线程的方式有哪些  

  1.使用继承 Thread类方式

    如下示例

    

    

    结果

    

    1.继承 Thread 类

     class CreateThread_1 extends Thread { /*......*/}

     2.重写方法 run()

     public void run()  {/*......*/}

     3.创建对象

     CreateThread_1  t1 = new CreateThread_1 ()

     4.启动线程

     ti.start()

     注意 : 如果 是直接 调用 run() 方法的话  它还是 单线程  会 按顺序向下执行

     直接调用  run()  方法  的话  也就是一个普通方法

        结果会是

     

  2.使用实现 Runnable 接口

     如下示例

     

 

     结果

     

     1.实现Runnable接口

     class CreateThread_2 implements Runnable {/*.....*/}

     2.实现  run()  方法

     public void run() {/*.....*/}

     2.启动线程

     // 创建对象

     CreateThread_2 t1 = new CreateThread_2();

     Thread thread = new Thread(t1);

     // 调用 start() 方法 启动线程

     thread.start();

     注意 :  Runnable  接口 没有 start()方法

     所以我们要用到 Thread 类 的  start()  方法

    

  3.Callable 内部匿名创建

     如下示例

     匿名  Thread 类

     

     示例  2

     

      

 

     结果

     

     匿名内部 创建多线程 比 Thread 类  和 Runnable 接口 更 灵活

多线程常用 api  方法

  start()        启动线程

  getId()       获取当前线程 id  编号 从0 开始

  getName()      获取当前线程名称

  例如:

   

  

  sleep(1000)    休眠  1 秒

  stop()       停止线程 

  currentThread()  获取当前线程对象

  (Thread.currentThread().getId()    获取当前线程  id)

  Thread(String name)分配一个新的 Thread 对象 并且定义名称

  例如 

  

多线程有几种状态

   1.新建

    new Thread();

  2.准备

    调用 start () 方法时 不会马上执行

  3.运行

    Cpu 开始执行 run 时

  4.休眠

    调用sleep()方法

    或者 wait()方法

  5.停止(死亡)

    Run 方发执行完毕或者调用 stop()方法

    

  流程图

  

  

join ()方法

  作用  :  先让别的线程先执行 ( 在当前线程 , 当前线程 让出  )

  示例:  让子线程先执行

  

  结果

  

总结 :

进程是正在运行的程序,它是线程的集合

线程就是在独立运行一条执行路径

多线程 就是为了提高程序的效率

进程是线程集合

线程是进程一条执行路径

Thread 类创建线程

Runnable 接口创建线程

匿名内部创建线程

多线程的常用api方法

多线程的运行状态

 

------------恢复内容结束------------

java 多线程 快速入门

1. 进程和线程

  什么是进程?

    进程是正在运行的程序它是线程的集合

    进程中一定有一个主线程

    一个操作系统可以有多个线程

   什么是线程?

    线程就是独立的运行一条执行路径

    一个独立的执行单元 , 一个执行流程

  为什么要使用多线程?

    多线程提高程序效率 , 使用多线程 , 每个线程互补影响

2.创建线程的方式有哪些  

  1.使用继承 Thread类方式

    如下示例

    

    

    结果

    

    1.继承 Thread 类

     class CreateThread_1 extends Thread { /*......*/}

     2.重写方法 run()

     public void run()  {/*......*/}

     3.创建对象

     CreateThread_1  t1 = new CreateThread_1 ()

     4.启动线程

     ti.start()

     注意 : 如果 是直接 调用 run() 方法的话  它还是 单线程  会 按顺序向下执行

     直接调用  run()  方法  的话  也就是一个普通方法

        结果会是

     

  2.使用实现 Runnable 接口

     如下示例

     

 

     结果

     

     1.实现Runnable接口

     class CreateThread_2 implements Runnable {/*.....*/}

     2.实现  run()  方法

     public void run() {/*.....*/}

     2.启动线程

     // 创建对象

     CreateThread_2 t1 = new CreateThread_2();

     Thread thread = new Thread(t1);

     // 调用 start() 方法 启动线程

     thread.start();

     注意 :  Runnable  接口 没有 start()方法

     所以我们要用到 Thread 类 的  start()  方法

    

  3.Callable 内部匿名创建

     如下示例

     匿名  Thread 类

     

     示例  2

     

      

 

     结果

     

     匿名内部 创建多线程 比 Thread 类  和 Runnable 接口 更 灵活

多线程常用 api  方法

  start()        启动线程

  getId()       获取当前线程 id  编号 从0 开始

  getName()      获取当前线程名称

  例如:

   

  

  sleep(1000)    休眠  1 秒

  stop()       停止线程 

  currentThread()  获取当前线程对象

  (Thread.currentThread().getId()    获取当前线程  id)

  Thread(String name)分配一个新的 Thread 对象 并且定义名称

  例如 

  

多线程有几种状态

   1.新建

    new Thread();

  2.准备

    调用 start () 方法时 不会马上执行

  3.运行

    Cpu 开始执行 run 时

  4.休眠

    调用sleep()方法

    或者 wait()方法

  5.停止(死亡)

    Run 方发执行完毕或者调用 stop()方法

    

  流程图

  

  

join ()方法

  作用  :  先让别的线程先执行 ( 在当前线程 , 当前线程 让出  )

  示例:  让子线程先执行

  

  结果

  

总结 :

进程是正在运行的程序,它是线程的集合

线程就是在独立运行一条执行路径

多线程 就是为了提高程序的效率

进程是线程集合

线程是进程一条执行路径

Thread 类创建线程

Runnable 接口创建线程

匿名内部创建线程

多线程的常用api方法

多线程的运行状态

 

最新文章

  1. 经纬度距离计算Java实现代码
  2. Reservoir Sampling 蓄水池抽样算法,经典抽样
  3. 使用Markdown编辑器写博客
  4. 幻灯片(响应式设计)(jquery实现)
  5. starling 中 的特效
  6. 字符串编码---hash函数的应用
  7. Duanxx的Design abroad: C++矩阵运算库Eigen 概要
  8. C语言-break和continue
  9. 剑指offer编程题Java实现——面试题12相关题大数的加法、减法、乘法问题的实现
  10. Scala的泛型
  11. CentOS配置apache多站点设置
  12. Android View体系(八)从源码解析View的layout和draw流程
  13. 支持ajax跨域调用的WCF搭建示例
  14. 简单的SpringWebFlow例子及遇到的问题
  15. Java基础知识_毕向东_Java基础视频教程笔记(13 字符)
  16. python+selenium+PhantomJS批量投递智联简历(不要用自己的账号进行测试,请使用小号,很烦人的,哈哈哈)
  17. 在Ubuntu上安装pyenv 相关问题Common build problems
  18. KNN识别手写数字
  19. mvc中seeeion和cook的用法
  20. 〖Windows〗zigbee实验之cygwin编译TestSimpleMac出错的解决方法

热门文章

  1. H3C 配置NAT Server
  2. [转]C#操作word模板插入文字、图片及表格详细步骤
  3. Can you find it?——[二分查找]
  4. 为什么阿里代码规约要求避免使用 Apache BeanUtils 进行属性复制
  5. 前端css图片固定宽高问题
  6. 【50.40%】【BZOJ 4553】[Tjoi2016&Heoi2016]序列
  7. Vmware 虚拟化
  8. BZOJ3527 推出卷积公式FFT求值
  9. C# string和String的区别
  10. 浮点数NaN和INF(#IND, #INF)