Trong khi bạn cần nhớ rằng sự an toàn của chuỗi cũng phải tính đến mã xung quanh, bạn có vẻ là người may mắn. Thực tế là quẹt được tạo ra bằng cách sử dụng của Pattern khớp phương pháp nhà máy và thiếu nhà xây dựng công cộng là một dấu hiệu tích cực. Tương tự như vậy, bạn sử dụng phương thức biên dịch tĩnh để tạo Mẫu bao trùm .
Vì vậy, trong ngắn hạn, nếu bạn làm một cái gì đó như ví dụ:
Pattern p = Pattern.compile("a*b");
Matcher m = p.matcher("aaaaab");
boolean b = m.matches();
bạn sẽ làm khá tốt.
Theo dõi ví dụ mã để rõ ràng hơn: lưu ý rằng ví dụ này ngụ ý mạnh mẽ rằng Matcher do đó được tạo là một chuỗi cục bộ với Mẫu và thử nghiệm. Tức là, bạn không nên để Matcher được tạo ra với bất kỳ chuỗi nào khác.
Thành thật mà nói, đó là rủi ro của bất kỳ câu hỏi an toàn luồng nào. Thực tế là bất kỳ mã nào cũng có thể trở thành luồng không an toàn nếu bạn cố gắng đủ nhiều. May mắn thay, có những cuốn sách tuyệt vời dạy chúng ta rất nhiều cách mà chúng ta có thể làm hỏng mã của mình. Nếu chúng ta tránh xa những sai lầm đó, chúng ta sẽ giảm đáng kể xác suất gặp vấn đề về luồng của chính mình.
compile()
phương thức có thể không. Đã có hai hoặc ba lỗi trong nhiều năm khiến quá trình biên dịch không thành công trong môi trường đa luồng. Tôi khuyên bạn nên thực hiện biên dịch trong một khối được đồng bộ hóa.