• JAVA并行程序基础二


    JAVA并行程序基础二

    线程组

    当一个系统中,如果线程较多并且功能分配比较明确,可以将相同功能的线程放入同一个线程组里。

    activeCount()可获得活动线程的总数,由于线程是动态的只能获取一个估计值。

    stop()可以停止当前线程组里的所有线程,但会遇到与Thread.stop()相同的问题,尽量不用。

    守护线程

    守护线程是系统的守护者,在后台默默地完成系统性的服务,如垃圾回收线程,JIT线程。与之对应的是用户线程,用户线程可以看做系统的工作线程,当系统工作线程全部执行完毕,那么整个系统将无事可做。守护线程要守护的对象就没有了,程序就结束运行了。当Java虚拟机中只有守护进程时,Java虚拟机会自动退出。

    setDaemon(true)可以将一个线程设置为守护线程。但必须在start()之前,否则会报异常按照用户线程执行。

    线程优先级

    可以使用setPriority()来给线程设置优先级,优先级高的线程只是在抢夺CPU执行权的时候抢到的概率较大,不代表优先级高的一定执行。

    synchronized

    synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:

    1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;进入当前代码块前要获得代码块的锁
    2. 修饰一个方法,被修饰的方法称为同步方法,其作用的范围是整个方法,作用的对象是调用这个方法的对象;
    3. 修改一个静态的方法,其作用的范围是整个静态方法,作用的对象是这个类的所有对象;
    4. 修改一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。

    总之被synchronized限制的多个线程是以串行的方式执行

  • 相关阅读:
    [C++]怎么将.h和.cpp文件分别放在不同的目录
    [C++]VAssistX文件头添加注释功能设置
    教程-Delphi调用百度地图API(XE8+WIN7)
    WebBrowser的各种使用方法(未完待续)(XE8+WIN7)
    Android教程-夜神模拟器连接IDE更新让Delphi发现你的手机或夜神模拟器
    首尔甜城常用电话
    Android问题-DelphiXE5开发Andriod连接Webservice乱码问题
    点乘的使用
    [转]脏读,不可重复读,幻读的理解
    Unity3D刚体不同力的测试(ForceMode,AddForce,RelativeAddForce)
  • 原文地址:https://www.cnblogs.com/huangshen/p/13232735.html
Copyright © 2020-2023  润新知