static AffinityLockInfo parse(String str) { final Matcher threadMatcher = THREAD_PATTERN.matcher(str); if (threadMatcher.matches()) { final int cpuId = Integer.parseInt(threadMatcher.group(1)); final String name = threadMatcher.group(2); final int priority = Integer.parseInt(threadMatcher.group(3)); final String parentName = threadMatcher.group(4); final boolean alive = Boolean.parseBoolean(threadMatcher.group(5)); final ThreadInfo threadInfo = ThreadInfo.create(cpuId, priority, name, parentName, alive); return AffinityLockInfo.create(threadInfo); } final Matcher noThreadMatcher = NO_THREAD_PATTERN.matcher(str); checkArgument(noThreadMatcher.matches(), "Invalid input: %s.", str); final int cpuId = Integer.parseInt(noThreadMatcher.group(1)); final boolean availableForApp = noThreadMatcher.group(2).equals(RESERVED_4_APP); return AffinityLockInfo.create(cpuId, availableForApp); }