Для того, чтобы использовать Pattern, его нужно сначала скомпилировать с помощью Pattern.compile. После этого можно использовать Pattern. Если вы заботитесь о производительности, вы можете захотеть скомпилировать Pattern один раз и затем его постоянно переиспользовать.

Является ли Pattern неизменяемым?

Да, Pattern является неизменяемым (иммутабельным классом). Это следует из документации:

Instances of this (Pattern) class are immutable and are safe for use by multiple concurrent threads. Instances of the Matcher class are not safe for such use.

https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

То есть однажды скомпилировав Pattern, его можно многократно переиспользовать в разных потоках, не боясь получить ошибку.

Является ли класс Regex потокобезопасным?