• java 面向对象编程--第十四章 多线程编程


    1、  多任务处理有两种类型:基于进程和基于线程。

    2、  进程是指一种“自包容”的运行程序,由操作系统直接管理,直接运行,有自己的地址空间,每个进程一开启都会消耗内存。

    3、  线程是进程内部单一的顺序控制流。一个进程拥有多个线程。多个线程共享一个进程的内存空间。

    4、  基于进程的特点是允许计算机同时运行两个或更多的程序。

    5、  基于线程的多任务处理环境中,线程是最小的处理单位。

    6、  基于进程所需的开销更少:每个进程都需要操作系统为其分配独立的内存空间;同意进程中的所有线程都在同意内存空间中工作,这些线程可以共享同一块内存和系统资源。

    7、  主线程:main方法一运行,就开启主线程。

    8、  主线程特点:最先开始、最后结束、产生其他的子线程、回收资源

    9、  创建线程的两种方式:声明一个Thread类的子类,并覆盖run()方法;声明一个Runnable接口的类,并实现run()方法。

    10、              在线程类中,调用start()方法和run()方法的区别:如果直接调用run()方法,是普通方法调用,不会在主线程基础上,开启子线程是单线程;调用start()方法,会在主线程基础上开启子线程,是多线程。

    11、              线程有八种状态:

    新建:new的方式产生一个线程对象。

    就绪:start启动运行run()方法。

    运行:执行run()方法。

    死亡:线程run()方法执行完毕。

    等待:Object里的wait()方法。

    睡眠:调用线程sleep()方法。

    挂起:yield()方法,线程显式出让CPU控制权。

    阻塞:等待IO事件输入。

    12、              线程优先级:当两个或多个线程,同时处于就绪状态,等待CPU执行,优先级高的线程优先得到执行。优先级分为1-10级,数字越大,优先级越高。

    13、              线程同步(线程安全)当两个或两个以上的进程同时操作同一个资源时,在同一时间只允许一个线程进行访问,别的线程等待。

    14、              关键字synchronized 同步,可以作为方法的修饰符,表示当一个线程正在访问资源时,其它进程只能等待。当该线程结束对该资源的访问时,才允许别的线程访问。

    15、              同步造成的结果:数据安全、效率低下。

    16、              同步有两种方式:同步方法、同步块。

    同步方法:public synchronized void test(){}

    同步块:public void run(){

                                synchronized(ob){}

                       }

    17、              wait()和sleep()方法的区别:

    • wait方法在Object类中定义,sleep方法在线程类Thread中定义;
    • wait方法只能放在同步方法或同步块中,表示当前线程对资源进行等待,sleep方法可以放在任何位置,表示当前线程休眠;
    • wait方法要释放对象锁,sleep方法不会释放对象锁;
    • wait方法使用后,线程需要notify唤醒后才能继续执行,而sleep在休眠结束后,线程自动继续执行。

    18、              线程之间通过wait(),notify(),notifyAll()方法通信。

    19、              两个线程在两个同步对象上循环依赖时,发生死循环。

  • 相关阅读:
    c++实现的一个链栈
    VS2005_XP DDK_DS3.2安装说明
    驱动开发遇到的一些问题
    fatal error LNK1000解决方法
    C++文件依存关系---提高编译速度
    架构的一些心得
    CPU与GPU的一点理解
    看"C++动态链接库编程深入浅出"的一些笔录
    VC2008下提示找不到MSVCP90D.dll的解决办法
    DLL搜索顺序
  • 原文地址:https://www.cnblogs.com/littlejava/p/5453330.html
Copyright © 2020-2023  润新知