2015-05-17 40 views
5

Tôi có một mảng các mảng int.Truy cập biến vòng lặp trong một lớp bên trong

DataArray[X][Y] 

Tôi muốn tạo chuỗi cho mỗi X, lặp lại dọc theo Y. Tôi không thể tìm ra cách chuyển giá trị X thích hợp cho mỗi chuỗi.

về cơ bản tôi muốn để có thể làm

ExecutorService threadPool = Executors.newFixedThreadPool(10); 
for (int i = 0; i < X; i++) { 
    threadPool.submit(new Runnable() { 
    public void run() {   
     Function_to_run(i); 
    } 
    }); 
} 

Bất kỳ trợ giúp sẽ được đánh giá

+0

'Tôi muốn tạo một chuỗi cho mỗi X, lặp lại dọc theo Y' Bạn có thể giải thích về ý nghĩa của điều này bằng cách này không? – CKing

+0

Hiện tại tôi có một chức năng theo chiều dọc Y của mảng và được gọi cho mỗi giá trị X. Tôi muốn cho điều này được thực hiện đồng thời hơn là trong một vòng lặp for. – user1908455

+0

Tôi cho rằng mã của bạn không được biên dịch? Xem câu trả lời của tôi. – CKing

Trả lời

6

Chỉ final giá trị có thể được chụp trong vòng một-bên-lớp phương pháp địa phương-nặc danh. Bạn cần thay đổi mã của bạn như sau:

for (int i = 0; i < X; i++) { 
     final int index = i; 
     threadPool.submit(new Runnable() { 
      public void run() { 

        Function_to_run(index); 

     } 
    }); 
+0

Điều này dường như đã hoạt động; sẽ cung cấp cho nó một số thử nghiệm – user1908455

+0

@ user1908455 Alright. Hãy cho tôi biết nếu nó không hoạt động. Nếu nó đã làm việc, đừng quên đánh dấu và upvote :) – CKing

+1

Điều này đang hoạt động :) – user1908455

0

Bất kỳ biến địa phương, tham số phương pháp hoặc xử lý ngoại lệ tham số chính thức được sử dụng nhưng không khai báo trong một lớp bên trong phải được khai báo thức. Bất kỳ biến cục bộ nào, được sử dụng nhưng không được khai báo trong một lớp bên trong phải được gán rõ ràng trước phần thân của lớp bên trong.

Các vấn đề liên quan