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

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方法

多线程的运行状态

 

java 多线程 快速入门的更多相关文章

  1. java多线程快速入门(六)

    多线程应用实例(批量发送短信) 1.创建实体类 package com.cppdy; public class UserEntity { private int id; private String ...

  2. java多线程快速入门(一)

    1.什么是进程 比如:QQ.QQ游戏.eclipse都是进程,可以通过任务管理器查看进程 2.进程和线程区别 线程是进程的一部分,一个进程可以包含多个线程,一个线程只能属于一个进程 进程是所有线程的集 ...

  3. java多线程快速入门(二十二)

    线程池的好处: 避免我们过多的去new线程,new是占资源的(GC主要堆内存) 提高效率 避免浪费资源 提高响应速度 作用:会把之前执行某个线程完毕的线程不会释放掉会留到线程池中给下一个调用的线程直接 ...

  4. java多线程快速入门(二十一)

    CountDownLatch(闭锁)计数器 有一个任务A,它要等待其他4个任务执行完毕之后才执行,此时就可以利用CountDownLatch来实现这种功能 package com.cppdy; imp ...

  5. java多线程快速入门(二十)

    1.Java.util的线程安全工具类 Vector(线程安全) ArrayList(线程不安全) HashTable(线程安全) HashMap(线程不安全) 2.将线程不安全集合变为线程安全集合 ...

  6. java多线程快速入门(十八)

    Lock锁是JDK1.5之后推出的并发包里面的关键字(注意捕获异常,释放锁) Lock与synchronized的区别 Lock锁可以人为的释放锁(相当于汽车中的手动挡) synchronized当线 ...

  7. java多线程快速入门(十七)

    多线程通讯实例(必须要有多个线程.必须要管理同一个变量:线程A生产一个变量,线程B消费一个变量) package com.cppdy; class User { public String usern ...

  8. java多线程快速入门(十五)

    使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) package com.cppdy; class MyThread11 extends Thread { / ...

  9. java多线程快速入门(十四)

    使用atomicInteger解决了原子性问题(AtomicInteger保证每次只能一个线程操作count) package com.cppdy; import java.util.concurre ...

随机推荐

  1. iptables 通讯端口转接(Port Forwarding)

    是一种特殊的DNAT操作,其作用是让一部电脑(通常是防火牆)担任其它电脑的代理伺服器(proxy).防火牆接收外界网络接传给它自己的包,然后改写包的目的地位址或目的端口,使其像是要送到內部网路其它电脑 ...

  2. 基于LIVE555的RTSP QoS实现

    如何从OnDemandServerMediaSubsession类以及继承类对象中获取RTCP信息(句柄) OnDemandServerMediaSubsession.cpp void StreamS ...

  3. html前端登录验证

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. java中的常量和变量

    变量的概念: 占据着内存中的某一个存储区域; 该区域有自己的名称(变量名)和类型(数据类型); 该区域的数据可以在同一类型范围内不断变化; 为什么要定义变量: 用来不断的存放同一类型的常量,并可以重复 ...

  5. css模仿ipad的日历

    https://www.cnblogs.com/sandraryan/ 题外话之:最近的练习用js之类的写起来会简单点,但是为了巩固基础,只好html和css硬怼页面X﹏X 这是一个日历的代码 注释有 ...

  6. Django OMR QuerySet的特性/存在意义

    QuerySet存在的意义主要在惰性机制和缓存两点 ---------->惰性机制: 所谓惰性机制:Publisher.objects.all()或者.filter()等都只是返回了一个Quer ...

  7. jQuery 工具类函数-使用$.extend()扩展Object对象

    除使用$.extend扩展工具函数外,还可以扩展原有的Object对象,在扩展对象时,两个对象将进行合并,当存在相同属性名时,后者将覆盖前者,调用格式为: $. extend (obj1,obj2,… ...

  8. 解决应用服务器变为集群后的Session问题

    2.2.4.2 解决应用服务器变为集群后的Session问题 先来看一下什么是Session. 用户使用网站的服务,基本上需要浏览器与Web 服务器的多次交互.HTTP 协议本身是无状态的,需要基于H ...

  9. 台州学院第十二届校赛记录(B,C,E,H,I,J,L)

    传送门:点我 题目很棒,感谢出题验题的大佬们. 细节坑不少,是好事. 还是很菜,继续加油! B: 桃子的生日 时间限制(普通/Java):1000MS/3000MS     内存限制:65536KBy ...

  10. Loj3033 JOISC 2019 Day2两个天线

    Loj3033 JOISC 2019 Day2两个天线 下午唯一听懂的题目但,但还是比较模糊.写一篇题解来加深一下印象. 题目大意:给定\(n\)根天线,第\(i\)跟天线的高度为\(h_i\),切它 ...