Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите добить код - Потоки 
:(
    Опции темы
bulat01
Дата 21.2.2012, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 100
Регистрация: 26.10.2010

Репутация: нет
Всего: 0



Привет всем,
помогите добить код - логика такова:

Эксель шит с 9 строками к примеру - 
При загрузке - 3 потока принтуют первые 3 строки - как 1 из 3 потоков освобождается, он берет очередную необработанную строку.
Не смог внедрить логику - очереди.
Может кто с этим сталкивался.

example of running current code:
Output:

New thread: Thread[1st thread -- loading,5,main]
New thread: Thread[2nd thread -- loading,5,main]
New thread: Thread[3rd thread -- loading,5,main]
***************************************************
kak bylo ranshe 3aggg---GE00-GEO-Y11-PR-0121-003---KB00:Karaganaski Bay General---GEO:Geosciences
3rd thread -- loading:3
***************************************************
***************************************************
kak bylo ranshe 2s---GE00-GEO-Y11-PR-0121-002---KB00:Karaganaski Bay General---GEO:Geosciences
2nd thread -- loading:2
***************************************************
***************************************************
kak bylo ranshe 1sd---GE00-GEO-Y11-PR-0121-001---KB00:Karaganaski Bay General---GEO:Geosciences
1st thread -- loading:1
***************************************************
Finish of major thread


Код

package thread;

import java.io.File;
import java.io.IOException;
import java.util.LinkedList;
import java.util.Queue;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
import jxl.write.Label;

public class testLoad {
    public static void main(String args[]){
          
     new NewThread("1st thread -- loading", "1");
     new NewThread("2nd thread -- loading", "2");
     new NewThread("3rd thread -- loading", "3");
     
     try{
       Thread.sleep(5000);
     }
     catch (InterruptedException e){
      System.out.println("Abort of major thread");
     }
     System.out.println("Finish of major thread");
  }
}


class NewThread implements Runnable {
    String name;
    Thread t;
    static String current_number;
    int t_number;
    public static Queue<String> queue;
    
    NewThread(String threadname, String rowNum){
     name = threadname;
     t_number = Integer.parseInt(rowNum); //argument String to int
     //t_number = rowNum;
     
     t = new Thread(this, name);
     System.out.println("New thread: " + t);
     t.start();
    }

    public void run() {
          String post_validation_file = "C:\\BU\\attr_sheet_test12_new_doc.xls";
          Workbook workbook = null;
          
        try {
            workbook = Workbook.getWorkbook(new File(post_validation_file));
        } catch (BiffException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
          Sheet sheet = workbook.getSheet(0);
    
          int full_rows_number = sheet.getRows();
          int full_columns_number = sheet.getColumns();
        
        //System.out.println("GGG t_number: " + t_number);
        
          
        for (int i = t_number; i < full_rows_number;i++) {
            
            //System.out.println("T_NUMBER: " + t_number);
            
                for (int j = 0; j < full_columns_number; j++) {
                }
                
                String cell_title = sheet.getCell(0, i).getContents();
             String cell_akco_doc_number =  sheet.getCell(1, i).getContents();
             String cell_asset = sheet.getCell(2, i).getContents();
             String cell_originator = sheet.getCell(3, i).getContents();

             System.out.println("***************************************************");
            System.out.println(cell_title + "---" + cell_akco_doc_number + "---" + cell_asset + "---" + cell_originator);
                        System.out.println(name + ":" + i );
                        System.out.println("***************************************************");
                
                      //System.out.println("row number: " + i);
                      //if(i == 4) break;
            try {
                if(i < i+1) break;
                Thread.sleep(500);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }    
        } //finish for 1 row
    }    
}

PM MAIL   Вверх
Royan
Дата 24.2.2012, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Dreamer
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 14.9.2002
Где: Лондон

Репутация: 3
Всего: 15



Очередь нужно использовать когда у вас есть Producer и Concumer. В вашем случае excel spreadsheet выполняет роль producer'а поэтому вам надо синхронизировать операцию чтения из него, очередь тут не нужна


--------------------
Открыта вакансия Junior Java Developer'а в нашем лондонском офисе, подробнее можно узнать здесь
PM MAIL MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.