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();

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

  • 相关阅读:
    Linux下Samba的配置
    NYoj-街区最短路径问题
    Merge into的使用具体解释-你Merge了没有
    c++11 stl atomic_flag 样例
    7个最好的免费杀毒软件下载
    关于PCA算法的一点学习总结
    linux查看硬件信息
    js php xmlrequest 上传图片
    BZOJ1827 [Usaco2010 Mar]gather 奶牛大集会
    只有小于65535端口编程可以用,查看哪些端口被打开netstat -anp,nc命令,nmap命令
  • 原文地址:https://www.cnblogs.com/SXTzhaopengda/p/7050778.html
Copyright © 2011-2022 走看看