zoukankan      html  css  js  c++  java
  • java第十章:多线程

    程序:封装了一定的代码集合,比如QQ,word都是应用程序;

    进程:就是正在运行的应用程序,是cpu分配资源的最小单位;进程之间的切换,内存开销比较大;一个进程可以有多个线程,有自己独立的内存空间

    线程:轻量级的进程,是任务调度和执行的基本单位;线程之前的切换,开销小,依赖于进程。

    怎么创建线程:

    方式一:继承java.lang.Thread类,重写run()方法

    方式二:实现java.lang.Runnable接口,重写run()方法/建议使用这一种,因为在java中是单继承,多实现的,一旦继承了一个父类,将无法再继承其他父类;

    启动线程用的是start()方法,而不是调用run()方法

    Thread类中常用的方法:

    getName();setName();getId();

    getCurrentThread()--->返回对当前正在执行的线程对象的引用。sleep()和 join()

    yield()--->让出时间片;stop()--->已过时,不建议使用,让线程进入死亡状态;

    Proxy:代理模式,其实就是实现多态;

     

    线程的生命周期:

    1.新生状态:new Thread();cpu已经分配内存空间

    2.就绪状态:调用strat()方法,具备运行条件!cpu尚未分配时间片

    3.运行状态:执行run()方法

    4.阻塞状态:遇到sleep()、IO阻塞、join()等

    5.死亡状态:线程正常结束,或出现异常,或遇到stop()方法

    线程的同步:使用synchronized关键字,加锁!避免对线程在抢占同意资源时,出现数据不安全,无效的情况!

    方式一:监视器,synchronized(Obj/this){          方式二:同步方法,使用synchronized修饰的方法

         //代码块

        }

    Timer类:计时器,继承TimerTask类,重写run()方法,使用schedule()--->调度器方法,按一定的时间规则自动启动线程;

    线程间的通讯:三个方法wait()---->在其他线程中调用notify()方法之前,一直处于等待状态!;notify();notifyAll();

    生产者和消费者模式:实现多线程通讯的经典案例!

  • 相关阅读:
    安装activeMQ(解压版)
    java匿名发送邮件(不需要登录)
    poi excel导入整数数字自动加小数点解决
    读取excel表中的数据
    DES加密解密实现
    验证码实现(google)
    下载文件到电脑本地
    Properties条件查询(适用于StorageAPI操作数据库)
    java位运算
    python测试开发工具库汇总(转载)
  • 原文地址:https://www.cnblogs.com/SXTzhaopengda/p/7050778.html
Copyright © 2011-2022 走看看