При просмотре источника UriMatcher
выясняется, что несколько потоков могут одновременно вызывать метод match
, поскольку реализация match
обращается только к каждому потокупеременная uri
(параметр), общие String
s и элементы ArrayList<UriMatcher>
(через ArrayList#get(int)
, который является потокобезопасным).
addURI
не поточно-ориентированный, поскольку структурно изменяет ArrayList
.Это тот же ArrayList
, из которого match
читает, поэтому addURI
не может быть вызван, в то время как другие потоки, возможно, вызывают match
.