ThreadedAcousticScorer API

来源:互联网 发布:网络被骗赌博钱能追回 编辑:程序博客网 时间:2024/05/16 11:49
<span style="font-size:24px;">public class ThreadedAcousticScorer extends SimpleAcousticScorer本类需注意的线程数,我们需根据线程数来把scoreableList分割成相应的小的列表,后处理。在此类需注意的是线程池的分配,使用,释放。本类的属性:@S4Integer(defaultValue = Thread.NORM_PRIORITY)public final static String PROP_THREAD_PRIORITY = "threadPriority";打分线程的优先级。必须是以下值之一:MIN_PRIORITY,MAX_PRIORITY,NORM_PRIORITY. NORM_PRIORITY为默认的打分线程的优先级。@S4Integer(defaultValue = 0)public final static String PROP_NUM_THREADS = "numThreads";本属性用来控制对HMM状态进行打分的线程的数量。如果属性isCpuRelative属性为false,则确定的数量的线程重来对HMM状态进行打分。如果属性isCpuRelative属性为true,则本属性的值是一个与系统中的可用处理器(cpu相关)的数量相关的值。如果你想每个cpu都有一个线程用来对状态进行打分,那么设置NUM_THREADS属性为0并且isCpuRelative属性设置为true。如果你只想有一个线程用来进行打分,则设置NUM_THREADS为1并且isCpuRelative为false。如果本属性值为1,且isCpuRelative为false,则没有任何多余的线程被实例化(即被创建),并且所以的计算都将被调用线程其本身所完成。本属性的默认值为0.@S4Boolean(defaultValue = true)public final static String PROP_IS_CPU_RELATIVE = "isCpuRelative";是否cpu相关。本属性用于在要决定用于打分的线程的数量时,用于控制在系统(机器)中可用数量的cpu是否被使用。如果本属性为true,则NUM_THREADS属性将会和可用的cpu数来要求决定打分线程的数量。注意打分线程数不可能为小于0的数。也就是,如果打分线程数为0,则对状态进行打分在调用线程内,不会有其他单独的线程被创建。本属性默认为false,即与cpu无关。@S4Integer(defaultValue = 10)public final static String PROP_MIN_SCOREABLES_PER_THREAD = "minScoreablesPerThread";本属性用来控制发送到在一个线程中最小的可打分对象的数目。即scoreable数量。如果线程数大于active list活动列表的长度,则本属性用来阻止可能发生的打分时的吵线程(threading of the scoring)。本属性默认为50。private final static String className = ThreadedAcousticScorer.class.getSimpleName();private int numThreads;         private int threadPriority;private int minScoreablesPerThread;  private ExecutorService executorService;本类的构造方法:public ThreadedAcousticScorer(BaseDataProcessor frontEnd, ScoreNormalizer scoreNormalizer,int minScoreablesPerThread, boolean cpuRelative, int numThreads, int threadPriority);通过给定参数来创建对象实例。public ThreadedAcousticScorer();空的构造方法本类的方法:public void newProperties(PropertySheet ps);在创建了对象的前提来,通过此方法来进行属性设置。与非构造方法对属性的设置有相同的效果。private void init(int minScoreablesPerThread, boolean cpuRelative, int numThreads, int threadPriority);通过给定参数来对属性进行初始化。public void allocate();为此打分器分配相应的资源。本方法主要是在线程数大于1时,创建线程池对象即创建一个可重用固定线程集合的线程池,以共享的无界队列方式来运行这些线程,在需要时使用提供的 ThreadFactory 创建新线程。   public void deallocate();资源的释放,本方法是用来对线程池进行资源释放的,即ExecutorService不为null的情况下,关闭线程池,并把ExecutorService赋为null。protected <T extends Scoreable> T doScoring(List<T> scoreableList, final Data data);为scoreable列表计算得分,返回得分最高的scoreable对象。由于线程数的变化,需对其进行相应的处理。本方法分成两中情况即线程数大于1的情况,还有就是线程数不大于1的情况。对于大于一的情况,本方法采用的是对scoreableList中的scoreable对象进行分割(分割时要注意必须要对所有的scoreable对象都进行处理,所有当分割后为小数时,需取大于此数的最小整数,此可用scoreableList的长度加线程数再减去1后在整除线程数来达到),分割后得到的每线程所需处理的scoreable对象数与属性每线程需处理的最小的scoreable对象数做比较。取最大者,然后来把scoreableList分割成子列表。并放入线程池中进行处理。最后返回处理后的最高的scoreable对象。当线程数不大于1的情况,就是调用其父类的相应方法来处理。</span>

0 0
原创粉丝点击