Tôi đã viết một chương trình đếm các dòng, từ và ký tự trong một văn bản: nó thực hiện điều này với các chuỗi. Đôi khi nó hoạt động rất tốt, nhưng không phải lúc nào cũng tuyệt vời. Điều cuối cùng xảy ra là các biến trỏ đến số từ và ký tự được đếm đôi khi xuất hiện ngắn và đôi khi không.khi nào một chuỗi thoát khỏi phạm vi?
Dường như với tôi rằng các chủ đề đôi khi kết thúc trước khi chúng có thể đếm tất cả các từ hoặc ký tự mà chúng muốn. Có phải vì các chủ đề này nằm ngoài phạm vi khi ngắt vòng lặp while (true) không?
Tôi đã bao gồm mã từ phần nhảy rất yếu của vấn đề của tôi dưới đây:
private void countText() {
try {
reader = new BufferedReader(new FileReader("this.txt"));
while (true) {
final String line = reader.readLine();
if(line == null) {break;}
lines++;
new Thread(new Runnable() {public void run() {chars += characterCounter(line);}}).start();
new Thread(new Runnable() {public void run() {words += wordCounter(line);}}).start();
println(line);
}
} catch(IOException ex) {return;}
}
(Câu hỏi Sub:. Đây là lần đầu tiên tôi đã được hỏi về điều gì đó và gửi mã tôi không muốn để sử dụng StackOverflow thay cho google và wikipedia và tôi lo rằng đây không phải là câu hỏi phù hợp? Tôi đã cố gắng đặt câu hỏi tổng quát hơn để tôi không chỉ yêu cầu trợ giúp về mã của tôi ... mà còn có một câu hỏi khác trang web nơi loại câu hỏi này có thể phù hợp hơn?)
Tôi chưa đợi các chủ đề hoàn thành. Bạn đang phải, tôi chỉ làm điều này để có được một hang của các phương pháp tôi sẽ sử dụng với các chủ đề: nhiệm vụ không yêu cầu chủ đề ở tất cả. Làm thế nào để bạn đợi một chuỗi kết thúc? Tôi có thể đợi Thread.activeCount() trả lại một số nhỏ không? – Ziggy
Thread.join() chờ một sợi đơn chết. Đợi đếm số đếm bằng 1 có thể hoạt động - tôi nghi ngờ bạn có thể chạy vào các điều kiện chủng tộc với các chủ đề đang trong quá trình khởi động, nhưng tôi không chắc chắn. –
Nếu bạn muốn nhận được hang của chủ đề, tôi khuyên bạn nên nhìn vào các công trình/thread hồ bơi/làm việc hàng đợi cách làm việc. Một khi bạn nhận được đầu của bạn xung quanh nó, nó thực sự dễ dàng hơn nhiều để lý do về việc tạo ra các chủ đề bằng tay. –