Я бы все же рекомендовал разобрать файл по строке и выбрать второе слово строки, где первое слово - version
.
Однако, эта реализация ниже будет служить вашей цели в виде регулярных выражений. Регулярное выражение (version ) ([A-Z0-9.'/-]+)
состоит из двух групп: первая будет содержать слово version
, а вторая - номер версии. Итак, просто получите номер версии.
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Main {
public static void main(String[] args) {
String gradleFileContent = "group 'com.shan.sample.gradle'\n" +
"version '1.0-SNAPSHOT'\n" +
"\n" +
"apply plugin: 'java'\n" +
"apply plugin: 'application'\n" +
"apply plugin: 'maven'\n" +
"\n" +
"sourceCompatibility = 1.8\n" +
"\n" +
"\n" +
"mainClassName = 'com.shan.sample.gradle.SampleProgram'\n" +
"\n" +
"dependencies {\n" +
" testCompile group: 'junit', name: 'junit', version: '4.12'\n" +
"}\n";
Pattern p = Pattern.compile("(version )([A-Z0-9.'/-]+)");
Matcher m = p.matcher(gradleFileContent);
if (m.find()) {
System.out.println(m.group(2));
}
}
}
Я не знаю, можно ли сделать это, но можно изменить приоритет потока выполняющегося потока через свойство Priority. Вы установили бы это:
Thread.CurrentThread.Priority = ThreadPriority.Lowest;
Кроме того, я не думаю, что Вы действительно хотите ограничить его. Если бы машина в других отношениях неактивна, Вы хотели бы, чтобы она начала действовать на с задачей, правильно? ThreadPriority помогает передать это к планировщику.
Можно замедлить цикл вызывающим потоком. Сон (миллисекунды) в цикле. Это возвращает ЦП планировщику.
Но 'потребление слишком большого количества ЦП' заставляет меня думать, что у Вас могли бы быть более фундаментальные проблемы. Этот поток опрашивает и ожидает чего-то еще? Если так, необходимо рассмотреть использование Событий или некоторого другого основанного на ядре сигнального механизма.
Я предполагаю, что необходимо запросить некоторый API ОС для обнаружения, сколько из ЦП Вы потребление и принимает решения регулировки (как Поток. Сон) от этого на.