tôi sử dụng java.text.NumberFormat đơn giản để chuyển đổi số thành Strings dễ đọc hơn, bằng dấu phẩy tách hàng ngàn, vv Về cơ bản tôi xác định nó như:Java: Sự cố đồng bộ hóa với NumberFormat?
public static NumberFormat nf = NumberFormat.getInstance(Locale.US);
... và sau đó tôi chỉ cần gọi nf.format (some_number) trong bất kỳ chủ đề nào mà tôi muốn tạo một phiên bản có thể đọc được của một số. Nhưng nhìn vào JavaDoc, nó nói: "Định dạng số thường không được đồng bộ hóa. Chúng tôi khuyên bạn nên tạo các cá thể định dạng riêng biệt cho mỗi chuỗi. Nếu nhiều chủ đề truy cập một định dạng đồng thời, nó phải được đồng bộ hóa bên ngoài."
Nếu tôi chỉ sử dụng phương thức định dạng (số) của đối tượng NumberFormat, có thể nào có vấn đề về đồng bộ hóa không? Tôi đã thử bằng cách sử dụng NumberFormat.getInstance (Locale.US) .format (number) thay vào đó, nhưng có chi phí liên quan đến việc đó mỗi khi tôi cảm thấy có lẽ không thực sự cần thiết. Điều này thực sự cần đồng bộ hóa bên ngoài? Hoặc là có một cách đơn giản hơn, hiệu quả để hoàn thành điều tương tự mà không có NumberFormat?
Cảm ơn!
Đo lường điều này bằng cách sử dụng https://gist.github.com/jontejj/5430320, kết quả được xuất bản tại http://1.microbenchmarks.appspot.com/run/[email protected]/se.softhouse .common.numbers.NumberFormatBenchmark mức tăng là thực sự khá đáng kể nếu định dạng số là điều duy nhất xảy ra. Điều này mặc dù NumberFormat giữ một bộ nhớ cache cho các trình định dạng được tạo ra và chỉ sao chép chúng trước khi trả về chúng. – jontejj
Và cùng áp dụng cho tất cả các lớp con .. Đặc biệt DateFormat – Snicolas