• JAVA并行程序基础二


    JAVA并行程序基础二

    线程组

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

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

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

    守护线程

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

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

    线程优先级

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

    synchronized

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

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

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

  • 相关阅读:
    一个SQL语句实现的统计功能
    VS2005中的全角BUG(C#代码)[转]
    Observer Pattern(观察者模式)及其在C#中的实现
    我觉得VS2003中最差的地方
    上班了,有点困:(
    GPRS
    今天是郁闷的一天
    今天上午给公司老总演示了SharePoint项目的产品雏形
    介绍一下SharePoint
    SharePoint Service里面的东东真让人头疼
  • 原文地址:https://www.cnblogs.com/huangshen/p/13232735.html
Copyright © 2020-2023  润新知