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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многопоточность 
V
    Опции темы
Samotnik
Дата 7.10.2007, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Добрый день!
Есть код, сканер Директорий 
Значит, после запуска программы, ползователю предлагается 2 выбора: просканировать и выйти.  Стоит условие:
Цитата

Где после запуска выводится приглашение для ввода команд. В нашем случае мы имеем две команды: scan и exit. Где scan запускает сканер в отдельном потоке с заданными параметрами. И exit корректно останавливает работу всех запущенных сканеров и завершает работу программы.
 
Вот тут то и проблемка, я не могу сообразить, как многопоточность сделать?!? 
Вот фрагмент кода:
Код

String p;
 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            while (true){
            System.out.println("Scan - To scan");
    System.out.println("Exit - To exit");
            p = br.readLine();
        
            if (p.equalsIgnoreCase("Scan")){
                BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Please enter scan -input"); 
//.........................
//Вот тут пошол выполняться код если пользователь выберет Scan: сканировать, копировать, удалять и т.д.
//  ................
// А вот это код если пользователь введет exit, но как вы видете он не корректный, а нужно сделать корректное завершение!! 
 if (p.equalsIgnoreCase("Exit")){
                System.out.println("Good Bye!! ");
                System.exit(0);
            }

Помогите плз приклееть многопоточность на Scan и exit  у меня ничего не получилось.  smile   smile    smile  smile    smile 
Пэ.Эс.
Желательно на примере моего кода, что бы легче разбираться было, т.к. во вторник уже сдавать это задание необходимо!!!
PM MAIL   Вверх
nornad
Дата 7.10.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Э... а ты вообще про многопоточность только слышал или хотя бы раз сам делал? Что-то мне кажется, что только слышал.
В общем, на форуме об этом уже куча всего есть и потому повторять лишний раз не стану (используй поле "Поиск", чай не первый день на форуме).
Скажу только, что тебе надо создать свой поток (Thread), в котором определить метод run.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 7.10.2007, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(nornad @  7.10.2007,  15:14 Найти цитируемый пост)
используй поле "Поиск"

Ничего полезного  smile 

Цитата(nornad @  7.10.2007,  15:14 Найти цитируемый пост)
Э... а ты вообще про многопоточность только слышал или хотя бы раз сам делал?

Делал сам, но только запуск элементарных приложени(распечатка цифр каждые 3 секунды,.. )
А вот сейчас по серьезнее нуна сделать, пробую пробую, но ..... smile 

Цитата(nornad @  7.10.2007,  15:14 Найти цитируемый пост)
Скажу только, что тебе надо создать свой поток (Thread), в котором определить метод run.

Так а что мне писать в методе run() ?  Ведь он должен быть реализован в классе, котором создается поток. А весь код у меня написан в   main() а в нем run() не напишешь. 

Это сообщение отредактировал(а) Samotnik - 7.10.2007, 16:12
PM MAIL   Вверх
Samotnik
Дата 7.10.2007, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



 smile 
Ребята, помогите плз сделать потоки для каждого сканера !!!
С меня 2 плюса, кто поможет!! 
На самом деле, срочно нужно, во вторник уже сдавать, а  мне еще junit повставлять нуна!!!
 smile  smile  smile 
PM MAIL   Вверх
Vasay
Дата 7.10.2007, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Многопоточность в java - это просто.

Давай так:
Цитата

Так а что мне писать в методе run() ?  Ведь он должен быть реализован в классе, котором создается поток. А весь код у меня написан в   main() а в нем run() не напишешь. 


Вынеси код, отвечающий за сканер в отдельный класс (пока без многопоточности) и запости код сюда....


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 7.10.2007, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  7.10.2007,  17:35 Найти цитируемый пост)
Вынеси код, отвечающий за сканер в отдельный класс

Так мне придется весь код выносить, т.к. у меня все реализованно в  main()

PM MAIL   Вверх
Vasay
Дата 7.10.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата(Samotnik @ 7.10.2007,  17:48)
Цитата(Vasay @  7.10.2007,  17:35 Найти цитируемый пост)
Вынеси код, отвечающий за сканер в отдельный класс

Так мне придется весь код выносить, т.к. у меня все реализованно в  main()

Так вынеси.... Зачем тебе код в main?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 7.10.2007, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



 smile 
Готово!
Код

import java.io.*;
import java.nio.channels.*;
import org.apache.commons.io.*;

 class NewThread  {
            String inputDir = "";
            String ouputDir = "";
            String mask = "";
            String p = "";
            String includeSubfolders = "";
            String autoDelete = "";
           
          public void MainFunction() throws Exception{
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            System.out.println("Scan - To scan");
        System.out.println("Exit - To exit");
            p = br.readLine();
//************************************************************************            
            if (p.equalsIgnoreCase("Scan")){
                BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Please enter scan -input");   
                inputDir = input.readLine();
                File f1 = new File(inputDir);
                if (f1.isDirectory()){
                System.out.println("     Your way  is  " + f1.getAbsolutePath());   
                }
                else{
                    System.out.println("Not exist such directory");
                }
//***************************************************************************************
                BufferedReader output = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Please enter - output  directory");
                ouputDir = output.readLine();
                File f2 = new File(ouputDir);
                if (f2.isDirectory()){
                System.out.println("     Your way  is  " + f1.getAbsolutePath());   
                              }
                else{
                    System.out.println("Not exist such directory");
                }
            
//*************************************************************************************
                 String s[] = f1.list();
                 System.out.println("     You have in that directory:");
                 for(int i=0;i<s.length;i++){
                 System.out.println("                    " + s[i]);}
                 BufferedReader maskvvoda = new BufferedReader(new InputStreamReader(System.in)); 
                 System.out.println("Please enter mask");
                 mask = maskvvoda.readLine();
                 String str1 = inputDir+mask;
                 String str2 = ouputDir+mask;
                 System.out.println(str1 + "  qwerqwerwer  " + str2);
                   
              BufferedReader includeSubf = new BufferedReader(new InputStreamReader(System.in));
              System.out.println("Do you wish include subfolders ? (true/false)");   
              includeSubfolders = includeSubf.readLine();
              if(includeSubfolders.equalsIgnoreCase("false")){
                                                
        try {
       FileChannel source = new FileInputStream(str1).getChannel();
       FileChannel destination = new FileOutputStream(str2).getChannel();
   
       destination.transferFrom(source, 0, source.size());
   
       source.close();
       destination.close();
   } catch (IOException e) {
   }
              }
              else if(includeSubfolders.equalsIgnoreCase("true")){
                  try {
                      
       } catch (Exception e) {
   }                  
              }
                   
//************************************************************************************
              BufferedReader deleteAuto = new BufferedReader(new InputStreamReader(System.in));
              System.out.println("                Do you wish delete that file ?   (true/false)");   
              autoDelete = deleteAuto.readLine();
              if(autoDelete.equalsIgnoreCase("true")){
                  File FDelete = new File(str1);  
                  FDelete.delete();
              }
                 
//*************************************************************************************            
            }
              if (p.equalsIgnoreCase("Exit")){
                System.out.println("Good Bye!! ");
                System.exit(0);
               /* if (Thread.isInterrupted()) {
                throw new InterruptedException();*/
}
           }
    }
public class Main {
          public static void main(String[] args) {
                        NewThread obj = new NewThread();
                        while(true){
                            try{
                        obj.MainFunction();}
                            catch(Exception e){
                                System.out.println("Warning" + e);
                            }
                        }
                        
      }
}



Это сообщение отредактировал(а) Samotnik - 7.10.2007, 18:21
PM MAIL   Вверх
nornad
Дата 7.10.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  7.10.2007,  20:27 Найти цитируемый пост)
С меня 2 плюса

Ну, ежели только за ради славы... smile

Цитата(Samotnik @  7.10.2007,  19:01 Найти цитируемый пост)
Так а что мне писать в методе run() ?

В нём и надо запускать сканер. Я бы рекомендовал выделить сканер в отдельный класс, который будет создаваться и запускаться в потоке.
Точнее, даже не так - пусть твой сканер и будет потоком. smile
В общем, делаешь класс сканера, наследуешь его от Thread и определяешь метод run.
Если вообще создавал поток, то проблем быть не должно. На форуме, повторюсь, есть масса примеров работы с потоками. Видимо, ты плохо искал.

Цитата(Samotnik @  7.10.2007,  20:48 Найти цитируемый пост)
Так мне придется весь код выносить

Сомневаюсь. У тебя же ещё должен быть реализован опрос консоли, чтобы пользователь мог вводить команды. Его, кстати, можно сделать в бесконечном цикле в основном потоке. Или выделить в отдельный поток, но это, имхо, хуже - зачем плодить лишние потоки?

Цитата(Samotnik @  7.10.2007,  20:57 Найти цитируемый пост)
Готово!

Цитата(Samotnik @  7.10.2007,  20:57 Найти цитируемый пост)
 class NewThread  {

Не похоже. А где наследование от трэда? Давай не будем делать откровенно глупые вещи. Тебе советовали выделить код сканера в отдельный класс. Это ты выделил. Теперь чтобы сделать из этого поток, осталось лишь унаследовать и определить ран. "Чего же боле?".


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 18:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Несовсем так. Я хотел чтобы ты вынес в отдельный класс все что отвечает за сам сканер,
т.е. то что между 

if (p.equalsIgnoreCase("Scan")){  
************************
}


т.е. то что будет работать в отдельном потоке.




--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 7.10.2007, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Vasay,   А так пойдет   ?  :
Код

import java.io.*;
import java.nio.channels.*;
import org.apache.commons.io.*;

 class NewThread implements Runnable {
            String inputDir = "";
            String ouputDir = "";
            String mask = "";
            String includeSubfolders = "";
            String autoDelete = "";
            
     void MainFunction() throws Exception{
         BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Please enter scan -input");   
                inputDir = input.readLine();
                File f1 = new File(inputDir);
                if (f1.isDirectory()){
                System.out.println("     Your way  is  " + f1.getAbsolutePath());   
                }
                else{
                    System.out.println("Not exist such directory");
                }
//***************************************************************************************
                BufferedReader output = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("Please enter - output  directory");
                ouputDir = output.readLine();
                File f2 = new File(ouputDir);
                if (f2.isDirectory()){
                System.out.println("     Your way  is  " + f1.getAbsolutePath());   
                              }
                else{
                    System.out.println("Not exist such directory");
                }
            
//*************************************************************************************
                 String s[] = f1.list();
                 System.out.println("     You have in that directory:");
                 for(int i=0;i<s.length;i++){
                 System.out.println("                    " + s[i]);}
                 BufferedReader maskvvoda = new BufferedReader(new InputStreamReader(System.in)); 
                 System.out.println("Please enter mask");
                 mask = maskvvoda.readLine();
                 String str1 = inputDir+mask;
                 String str2 = ouputDir+mask;
                 System.out.println(str1 + "  qwerqwerwer  " + str2);
                   
              BufferedReader includeSubf = new BufferedReader(new InputStreamReader(System.in));
              System.out.println("Do you wish include subfolders ? (true/false)");   
              includeSubfolders = includeSubf.readLine();
              if(includeSubfolders.equalsIgnoreCase("false")){
                                                
        try {
       FileChannel source = new FileInputStream(str1).getChannel();
       FileChannel destination = new FileOutputStream(str2).getChannel();
   
       destination.transferFrom(source, 0, source.size());
   
       source.close();
       destination.close();
   } catch (IOException e) {
   }
              }
              else if(includeSubfolders.equalsIgnoreCase("true")){
                  try {
                      File ffu1 = new File(inputDir);
                      File ffu2 = new File(ouputDir);
                      
                      FileUtils fu = new FileUtils();
                      fu.copyDirectoryToDirectory(ffu1,ffu2);
                      
       } catch (Exception e) {
   }                  
              }
                   
//************************************************************************************
              BufferedReader deleteAuto = new BufferedReader(new InputStreamReader(System.in));
              System.out.println("                Do you wish delete that file ?   (true/false)");   
              autoDelete = deleteAuto.readLine();
              if(autoDelete.equalsIgnoreCase("true")){
                  File FDelete = new File(str1);  
                  FDelete.delete();
              }         
     }
           
     void ExitFunctions(){
         System.exit(0);
     }
   }
public class Main {
          public static void main(String[] args) throws Exception{
             String p = "";
             NewThread obj = new NewThread();
             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             while(true){
             System.out.println("Scan - To scan");
         System.out.println("Exit - To exit");
             p = br.readLine();
         
            if (p.equalsIgnoreCase("Scan")){
                 obj.MainFunction();
            }
              if (p.equalsIgnoreCase("Exit")){
              obj.ExitFunctions();
}
             }
           }   
}     

nornad, пожалуйста скажи номер строки, где следует писать  ран ?

Это сообщение отредактировал(а) Samotnik - 7.10.2007, 19:16
PM MAIL   Вверх
Vasay
Дата 7.10.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Не не пойдет.... Добавил Почти пойдет...

Итак, давай по порядку, как это должно работать (пока без потока):

Класс main:

Что логически там должно произойти?

Запуск программы ->Вывод сообщения (введите "scan" для сканирования, "Exit" для выхода) -> читаем ввод пользователя ->
Если "Exit" -> вышли

Если "Scan"-> (Пока) создали объект класса NewThread -> Запустили MainFunction(); ->MainFunction()  отработала -> (это на будущее) попросили пользователя ввести "Stop", если  верно, то вышли, нет, просим еще раз

Сделай пока это, тебе немного поменять (пока без потоков)

Это сообщение отредактировал(а) Vasay - 7.10.2007, 20:33


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 7.10.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Чет я вот с этим не сильно понял

Цитата(Vasay @  7.10.2007,  20:27 Найти цитируемый пост)
 попросили пользователя ввести "Stop", если  верно, то вышли, нет, просим еще раз

Это должно получицц что-то вроде этого ?
Код

public class Main {
          public static void main(String[] args) throws Exception{
             String p = "";
             NewThread obj = new NewThread();
             BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
             while(true){
             System.out.println("Scan - To scan");
         System.out.println("Exit - To exit");
             p = br.readLine();
         
            if (p.equalsIgnoreCase("Scan")){
           System.out.println("Please enter STOP");
            obj.MainFunction();
               do{
                 char с = (char) br.read();                 
                      }
while (c!='stop')
              if (p.equalsIgnoreCase("Exit")){
             System.exit(0);
}
             }
           }
}

Я чего - то не понимаю, зачем вводить СТОП ??
PM MAIL   Вверх
nornad
Дата 7.10.2007, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  7.10.2007,  22:10 Найти цитируемый пост)
nornad, пожалуйста скажи номер строки, где следует писать  ран ?

В предыдущем варианте строки 20-86 уходят в класс сканера. Можно всё запихнуть в ран, а можно разбить на методы по логике работы.

Добавлено через 3 минуты и 59 секунд
Цитата(Vasay @  7.10.2007,  23:27 Найти цитируемый пост)
отработала -> (это на будущее) попросили пользователя ввести "Stop", если  верно, то вышли, нет, просим еще раз

Я тоже не понял, зачем это smile

Добавлено через 4 минуты и 43 секунды
Короче, в мэйне тебе надо сделать такой цикл:


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



1. char - это один символ, он равен слову быть не может.

Цитата


Я чего - то не понимаю, зачем вводить СТОП ?? 


Впринципе, он нам не нужен, но так как для начала, я хочу, чтоб ты запустил только один поток, то стоп нам нужен, для того, чтоб корректно его остановить, а не ждать пока он завершит работу

Перечитал задание, подумал, что много мы в отдельную функцию вынесли, в потоке не должно быть никакого общения с юзером...


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



0. считали с консоли
1. (начало while(true)) проверили
а) эксит - циклу бряк
б) скан - создали сканер (каждый сканер увеличивает счётчик сканеров на 1) и пустили бегать
в) что-то другое - игнорируем
2. считали с консоли
3. переходим на 1.
4. (за циклом) ставим объект-флажок, который сигнализирует сканерам, что пора закругляться
5. ждём, пока счётчик сканеров не станет 0
6. завершаемся


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Просто по заданию, нужно запускать много потоков, и есле в потоке будет общение с юзерами, то будут проблемы


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Vasay @  8.10.2007,  00:06 Найти цитируемый пост)
в потоке не должно быть никакого общения с юзером... 

не получится, т.к. в коде есть такое:
Код

              System.out.println("                Do you wish delete that file ?   (true/false)");   

Пока файл не найден ты не можешь спросить пользователя, а когда найден - ты в потоке. smile

Добавлено через 2 минуты и 56 секунд
В общем, то, что общение надо вынести - согласен. Просто, надо изменить вид общения. Например, про удаление спрашиваем до сканирования - надо ли удалять найденные файлы? Можно, конечно, извратиться и сделать два последовательных потока - в первом находим, потом в основном спрашиваем про каждый файл и пускаем другой поток, который удалит выбранные файлы. Но это вообще зицер - косяки прибавятся.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

0. считали с консоли
1. (начало while(true)) проверили
а) эксит - циклу бряк
б) скан - создали сканер (каждый сканер увеличивает счётчик сканеров на 1) и пустили бегать
в) что-то другое - игнорируем
2. считали с консоли
3. переходим на 1.
4. (за циклом) ставим объект-флажок, который сигнализирует сканерам, что пора закругляться
5. ждём, пока счётчик сканеров не станет 0
6. завершаемся 


Согласен... только у сканера (в том виде в котором он сейчас есть) часть кода (та что спрашивает директорию) не должна быть в потоке.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Кстати, хотелось бы узнать, что именно должен делать сканер. В первом посте написано, что 
Цитата(Samotnik @  7.10.2007,  17:15 Найти цитируемый пост)
scan запускает сканер в отдельном потоке с заданными параметрами

, что не подразумевает какой-либо работы сканера. smile Лишь его запуск.  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

В общем, то, что общение надо вынести - согласен. Просто, надо изменить вид общения. Например, про удаление спрашиваем до сканирования - надо ли удалять найденные файлы? Можно, конечно, извратиться и сделать два последовательных потока - в первом находим, потом в основном спрашиваем про каждый файл и пускаем другой поток, который удалит выбранные файлы. Но это вообще зицер - косяки прибавятся.



можно использовать синхронизацию, т.е. создать функцию работы с консолью, и ее засинхронизировать


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Автор, похоже, не ожидал такого жаркого обсуждения в воскресенье. smile

Добавлено через 1 минуту и 31 секунду
Цитата(Vasay @  8.10.2007,  00:15 Найти цитируемый пост)
можно использовать синхронизацию, т.е. создать функцию работы с консолью, и ее засинхронизировать

Можно. Только зачем лишние трудности, если по заданию мы не обязаны спрашивать юзера в процессе сканирования?
Потому-то и хочется услышать, что же именно должен делать сканер. Я голосую за "щелкать семечки".  smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 7.10.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(nornad @  7.10.2007,  21:16 Найти цитируемый пост)
Автор, похоже, не ожидал такого жаркого обсуждения в воскресенье. 

Автор не ожидал такого общения после слов:

Цитата(Vasay @  7.10.2007,  17:35 Найти цитируемый пост)
Многопоточность в java - это просто.


Цитата(nornad @  7.10.2007,  18:35 Найти цитируемый пост)
Теперь чтобы сделать из этого поток, осталось лишь унаследовать и определить ран. "Чего же боле?".

 smile 
PM MAIL   Вверх
Vasay
Дата 7.10.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Автор, похоже, не ожидал такого жаркого обсуждения в воскресенье. smile 


Автор, наверно сейчас спокойно смотрит телик, покуривая сигаретку, и попивая пивко, и ждет пока мы с тобой не решим, как всеже должен у него работать поток  smile 



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Vasay @  8.10.2007,  00:21 Найти цитируемый пост)
пока мы с тобой не решим, как всеже должен у него работать поток

А мы уже решили. Что и оторвало автора от телека с сигареткой. smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 7.10.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  7.10.2007,  21:21 Найти цитируемый пост)
Автор, наверно сейчас спокойно смотрит телик, покуривая сигаретку, и попивая пивко, и ждет пока мы с тобой не решим, как всеже должен у него работать поток

Не - а
Автор с самого утра сидит и парицца то с потоками, то как скопировать файл (который лежит в 15 папках) да так, чтобы все эти папки в новом месте тоже остались!!! А еще автор доки по логированию и junit читает, и самое интересное, все это он делает ради одного задания(вот этого  smile ) и для того чтобы во вторник всю эту красоту в рабочем состоянии здать.   smile  smile  smile 
PM MAIL   Вверх
Vasay
Дата 7.10.2007, 21:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Цитата(Vasay @  7.10.2007,  17:35 Найти цитируемый пост)
Многопоточность в java - это просто.


Это действительно просто  smile, несколько страниц в учебнике, кстати  smile  
Самое простое (и самое неправильное), просто дать тебе рабочий код... но ты ведь, тогда  сдашь его, и не поймешь, как просто - потоки в java  smile 


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 7.10.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  7.10.2007,  21:25 Найти цитируемый пост)
несколько страниц в учебнике, кстати

Так в том то и дело!!
Что я все по потокам в Шилде и Ноутоне  выучил, но ведь там примеры, с распечаткой циферок, а мне нужно чуток по-серьезнее. 
Да еще и доки по потокам выучил,  вот!!
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  8.10.2007,  00:28 Найти цитируемый пост)
но ведь там примеры, с распечаткой циферок, а мне нужно чуток по-серьезнее.

Скажи-ка, а какая разница, что твой поток делать будет? Я пока что-то не вижу. Что циферки выводить, что папки сканить и файлы копировать - всё едино.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Не - а
Автор с самого утра сидит и парицца то с потоками, то как скопировать файл (который лежит в 15 папках) да так, чтобы все эти папки в новом месте тоже остались!!! А еще автор доки по логированию и junit читает, и самое интересное, все это он делает ради одного задания(вот этого  smile ) и для того чтобы во вторник всю эту красоту в рабочем состоянии здать.   


Не жди от меня жалости - я препод  smile 

Цитата

Так в том то и дело!!
Что я все по потокам в Шилде и Ноутоне  выучил, но ведь там примеры, с распечаткой циферок, а мне нужно чуток по-серьезнее. 

во первых - Шилдт

во вторых, сейчас возьму эту книжку и буду тбя носом в примеры тыкать  smile 


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Vasay @  8.10.2007,  00:43 Найти цитируемый пост)
Не жди от меня жалости - я препод

 smile  smile 
Цитата(Vasay @  8.10.2007,  00:43 Найти цитируемый пост)
и буду тбя носом в примеры тыкать

препода это могут smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 7.10.2007, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



to Samotnik

возьми книжку, посмотри главу 11, посмотри пример в разделе использование синхронизированных методов (у меня стр 283), посмотри его, и скажи, что тебе в нем непонятно?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 7.10.2007, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



"Задумался Чапай..." smile


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 7.10.2007, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  7.10.2007,  21:43 Найти цитируемый пост)
Не жди от меня жалости - я препод

Со стереотипами?  smile 

Цитата(Vasay @  7.10.2007,  22:06 Найти цитируемый пост)
(у меня стр 283

Блин, да  мне все понятно в этом примере!!!!!(2  nornad,  вот я сейчас не кричу, я вообще очень редко кричу  smile ) Я ведь писал, что Шилдта  smile  я прочитал ВСЕГО! Но неполучается у меня  smile  smile  smile  smile  smile  smile 
 
Vasay,  нет ну так не пойдет, давайте искать компромис, сегодня понедельник, а мне во вторник нуно проект здавать!!!  smile 

 smile  smile  smile  smile  smile  smile  smile  smile  smile 

Это сообщение отредактировал(а) Samotnik - 7.10.2007, 23:26
PM MAIL   Вверх
Vasay
Дата 7.10.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Vasay,  нет ну так не пойдет, давайте искать компромис, сегодня понедельник, а мне во вторник нуно проект здавать!!!  smile 


А как пойдет, чтоб тебе дали готовый код?

Этот пример легко превращается в то что тебе нужно...

Давай возьмем его и превратим в твою программ. (только не забудь посмотреть на следующую страницу, там написано что надо добавить в этот код, чтоб класс Callme стал синхронизированным)

Начнем с класса Synch - это твой Main

Впринципе, ты его почти написал:

сейчас проверю, чтоб работало, а ты пока запусти пример....


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Vasay
Дата 8.10.2007, 00:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Ну что, запустил, или спать ушел?


Видать ушел спать... Я тоже пойду...

Посмотри этот код:
Код

/*
 * Main.java
 *
 * Created on 7 Октябрь 2007 г., 21:03
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package samotnik;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

/**
 *
 * @author vasay
 */
class Callme {
   

    private static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
    public static synchronized  String call(String msg, boolean ans) throws IOException {
        String out = "";
        
        System.out.println(msg);
        
        if(ans == true) {
            out = br.readLine();
        }
        
        return out;
    }
    
}

class Caller implements Runnable {
    
  //  String msg;
    String ThreadName;
    
    Thread t;
    
    private boolean KillMe = false;
        
    
    public Caller( String Name) {
        
       ThreadName = Name;
        
       
        t = new Thread(this);
        
        t.start();
        
    }
    
    void setKillMe(boolean KM)
    {
        KillMe = KM;
    }
    
    public void run() {
        try {
            for(int i = 0; i<10; i++)
            {
                Thread.sleep(1000);
                if(KillMe==true)
                {
                    Callme.call("ya potok "+ThreadName+", i ya sdelal "+i+" tsiclov. No na etom moya jizn' zakanchivaetsa. Poka!!! Najmite enter dldlya prodoljeniya",true);
                    break;
                }
                else
                {
                    Callme.call("ya potok "+ThreadName+", i ya sdelal "+i+" tsiclov. Najmite enter dldlya prodoljeniya",true);
            
                }
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        
    } 
}


public class Main {
    
    /** Creates a new instance of Main */
    public Main() {
    }
    
    public static void main(String[] args) {
        

        ArrayList  ThreadList = new ArrayList();
        String Ans = "";
        int count =0;
        
        try {
            do{
                Ans = Callme.call("Enter \"start\" - To start new thread, \"Exit\" - To exit, i chto libo drugoe drya prodoljeniya" ,true);
                if (Ans.equalsIgnoreCase("start")){
                    ThreadList.add(new Caller("Thread"+count));
                    count++;
                    //Thread.sleep(1000);
                }

            }while(!Ans.equalsIgnoreCase("Exit"));
            for (int i = 0; i < ThreadList.size();i++)
            {
                if(((Caller)ThreadList.get(i)).t.isAlive())
                {
                    ((Caller)ThreadList.get(i)).setKillMe(true);
                    ((Caller)ThreadList.get(i)).t.join();
                }
                
            }
            
        } catch (IOException ex) {
            ex.printStackTrace();
        } catch (InterruptedException ex) {
            ex.printStackTrace();
        }
        
    }

}


Это слегка переделанный пример из книжки,  посмотри его, там немного добавить, чтоб решить твой вопрос. На красоту кода не притедую, ибо не особо старался, но он работает.



Это сообщение отредактировал(а) Vasay - 8.10.2007, 01:40


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 08:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Vasay,   smile   
Щас не могу, на пары нужно идти, вечером отпишусь!!!  smile 
PM MAIL   Вверх
alex_nevolin
Дата 8.10.2007, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Хочу тоже помочь smile 
1) Для начала сделай классы помощники чтения входных параметров. Что-то типа этого:
Код

class DirectoryReader {
    public static File read(BufferedReader br, String question)
        throws IOException {
        while (true) {
            System.out.println(question);
            File dir = new File(br.readLine());
            if (dir.exists() && dir.isDirectory())
                return dir;
            else
                System.out
                    .println("Not exist such directory, please try again");
        }
    }
}

Это избавит тебя от дублирования кода, позволит лучше контролировать код и ввод пользователя и сократит твой main.

2)Создай класс который будет заниматься непосредственно копированием, относледуй его от Thread и параметризуй. Типа так:
Код

class FileScaner extends Thread {

    private File inputDir;
    private File outputDir;
    private FilenameFilter filter;
    private boolean includeSubfolders;
    private boolean autoDelete;

    public FileScaner(
        File inputDir,
        File outputDir,
        FilenameFilter filter,
        boolean includeSubfolders,
        boolean autoDelete) {
        super();
        this.inputDir = inputDir;
        this.outputDir = outputDir;
        this.filter = filter;
        this.includeSubfolders = includeSubfolders;
        this.autoDelete = autoDelete;
    }
}

Так ты сможешь более удобно контролировать код и переписывать, его менять функциональность.

3)Создай в классе FileScaner методы рекурсивного обхода директорий и копирования файлов:
Код

private void copyDir(
        File inputDir,
        File outputDir,
        FilenameFilter filter,
        boolean includeSubfolders,
        boolean autoDelete) {
        File[] files = inputDir.listFiles(filter);
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile())
                copyFile(files[i], new File(outputDir, files[i].getName()),
                    autoDelete);
            if (includeSubfolders && files[i].isDirectory()) {
                File dir = new File(outputDir, files[i].getName());
                dir.mkdir();
                copyDir(files[i], dir, filter, includeSubfolders, autoDelete);
                if (autoDelete)
                    files[i].delete();
            }
        }
    }

    private void copyFile(File inp, File out, boolean autoDelete) {
        try {
            FileChannel source = new FileInputStream(inp).getChannel();
            FileChannel destination = new FileOutputStream(out).getChannel();
            destination.transferFrom(source, 0, source.size());
            source.close();
            destination.close();
            if (autoDelete)
                inp.delete();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

Это в дальнейшем облегчит тебе написание тестов (Junit).

4)Теперь все просто. вызови в run этого класса:
Код

//        System.out.println("The '" + Thread.currentThread().getName()
//            + "' start");
        copyDir(inputDir, outputDir, filter, includeSubfolders, autoDelete);
//        System.out.println("The '" + Thread.currentThread().getName()
//            + "' finish");


5) Осталось написать main:
Код

public static void main(String[] args) {
        try {
            BufferedReader br = new BufferedReader(new InputStreamReader(
                System.in));
            int threadcounter = 1;
            while (true) {
                System.out.println("Scan - To scan");
                System.out.println("Exit - To exit");
                String command = br.readLine();
                if (command.equalsIgnoreCase("Scan")) {
                    File inputDir = DirectoryReader.read(br,
                        "Please enter scan - input directory");
                    File outputDir = DirectoryReader.read(br,
                        "Please enter - output directory");
                    FilenameFilter filter = MaskReader.read(br,
                        "Please enter mask");
                    boolean includeSubfolders = BooleanReader.read(br,
                        "Do you wish include subfolders? (true/false)");
                    boolean autoDelete = BooleanReader.read(br,
                        "Do you wish delete that file? (true/false)");
                    FileScaner scaner = new FileScaner(inputDir, outputDir,
                        filter, includeSubfolders, autoDelete);
                    scaner.setName("Thread " + threadcounter++);
                    scaner.start();
                } else if (command.equalsIgnoreCase("Exit")) {
                    System.out.println("Good Bye!! ");
                    break;
                } else {
                    System.out.println("Unknown command, please try again");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

PM MAIL   Вверх
Vasay
Дата 8.10.2007, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



to alex_nevolin

Ну вот, теперь Samotnik просто возьмет твой код, получит 5, а как потоки работают, так и не разберется, подождал бы уж до вечера, пускай бы человек хоть в чем-то разобраться попробовал бы.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  8.10.2007,  16:02 Найти цитируемый пост)
 получит 5

почему 5 , мож я 10   хочу  smile 

Цитата(Vasay @  8.10.2007,  16:02 Найти цитируемый пост)
так и не разберется, подождал бы уж до вечера, пускай бы человек хоть в чем-то разобраться попробовал бы.

Буду разбираться!!  smile   Честное слово!!!

Пэ.эс.
Вобщем, если заработает, то как и обещал, всем кто мне помог  по +2  в "репу"   smile  
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



2 all
Я вот нифига не разобрался! То,что скинул alex_nevolin,  содержит 56 ошибок и ничего не понятно! Можно как нить на примере МОЕГО кода обьяснить! Оч надо!!
PM MAIL   Вверх
alex_nevolin
Дата 8.10.2007, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ок. Давай попробуем.
Только проблема в том что у тебя все в одной куче. Давай говорить о конкретных классах которые будут реализовывать ту или иную функциональность в программе. Ну например давай вначале реализуем класс копирования директорий. Напишем его оттестируем, можно даже сразу написать тесты к нему.. это ведь тоже входит в задание?
PM MAIL   Вверх
nornad
Дата 8.10.2007, 18:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  8.10.2007,  19:46 Найти цитируемый пост)
всем кто мне помог  по +2  в "репу"

Извращенец smile
Цитата(alex_nevolin @  8.10.2007,  20:18 Найти цитируемый пост)
Ок. Давай попробуем.
Только проблема в том что у тебя все в одной куче.

Вот тут-то собака и порылась. Если ты ещё не понял, поясняю - надо вместо Samotnik'а всю эту кучу разложить по полочкам и дать готовый код, который можно скомпилировать, запустить и юзать. В общем, от чего мы с Vasay и пытались его отучить. smile

Добавлено через 2 минуты и 35 секунд
alex_nevolin, самое смешное, что решение уже описано раза три. Просто автор почему-то до сих пор не реализовал его. Учитывая, что решение достаточно элементарное, я больше склоняюсь к варианту с нежеланием самостоятельно подумать. Могу, конечно, и ошибаться; поэтому сразу прошу прощения у автора, если не прав - обижать не имею намерения.

Добавлено через 4 минуты и 18 секунд
Samotnik, на правах рекламы рекомендую в следующем "предложении писать" примерно так:
всем, кто поможет мне с решением - дам дважды в репу.
Куда веселее получается. smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
alex_nevolin
Дата 8.10.2007, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну дак поэтому, я и не запостил готовый работающий пример. Всего лишь пытаюсь натолкнуть автора темы на правильные решения в разработке данной программы. Может конечно запостил сразу слишком много. Но разобраться думаю в моем ответе не сложно.
PM MAIL   Вверх
Vasay
Дата 8.10.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Вобщем, если заработает, то как и обещал, всем кто мне помог  по +2  в "репу"   smile   


Не, не подкупишь, готовый код все равно не дам  smile 

Цитата

Учитывая, что решение достаточно элементарное, я больше склоняюсь к варианту с нежеланием самостоятельно подумать.

Грустно...

to Samotnik, - ты мой код посмотрел (он компилется, проверял  smile )? Напиши мне, кудав там надо вставить работу сканера?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(nornad @  8.10.2007,  18:04 Найти цитируемый пост)
Извращенец 

Да я такой  smile 
nornad,  smile  smile  smile   ОТЖОГ!!!  smile  smile  smile 


nornad,  Блин заговнил по-полной  smile

Добавлено через 11 минут и 27 секунд
2 all
Ребята!  Ну пажалуйсто дайте работающий код!!
Просто, дело в том, что завтра очень ответсвенный день, и этот код будет решать мою дальнейшую судьбу (быть или не быть  smile ). Я вам ОБЕЩАЮ что в коде я разберусь от и До !!  smile   Потом в этой же теме  Vasay,  будете меня экзаменировать !! По потокам, 
Ну на самом деле, время осталось чуть-чуть !!
smile smile  smile  smile  smile  smile  smile smile 
PM MAIL   Вверх
Maksym
Дата 8.10.2007, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(Samotnik @  8.10.2007,  18:24 Найти цитируемый пост)
Просто, дело в том, что завтра очень ответсвенный день, и этот код будет решать мою дальнейшую судьбу

так чего же ты его писать не хочешь? делал бы то, что тебе nornadVasay и alex_nevolin говорят уже бы давно закончил и забыл. там писать то 30 строк.
PM MAIL   Вверх
Vasay
Дата 8.10.2007, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



to Samotnik

На кого учишься, на каком курсе?  И что будет если ты завтра не сдашь?



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Maksym @  8.10.2007,  19:07 Найти цитируемый пост)
так чего же ты его писать не хочешь? делал бы то, что тебе nornad, Vasay и alex_nevolin говорят уже бы давно закончил и забыл. там писать то 30 строк.

Ну хорошо, давайте сначала!
Что мне необходимо сделать в моем коде, где , к примеру написать метод run() ?

Цитата(Vasay @  8.10.2007,  19:37 Найти цитируемый пост)
На кого учишься, на каком курсе?

Программист 4 курс, Java изучаю  с февраля
PM MAIL   Вверх
Vasay
Дата 8.10.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Программист 4 курс, Java изучаю  с февраля 


   3.14здец... Программист   smile   - не удеожался, вырвалось....

Ты запустил код из этого примера ???



--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  8.10.2007,  20:46 Найти цитируемый пост)
Ты запустил код из этого примера ???

Да
PM MAIL   Вверх
nornad
Дата 8.10.2007, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



В твоём коде - нигде, т.к. его сначала надо привести к такому виду, чтобы при чтении-выводе на консоль из различных потоков на консоли всякая муть не получилась. Для этого достаточно всё общение вынести за пределы сканера. Чтобы сканер только искал и производил действия. Об этом тебе уже говорили. Перечитай тему сызнова.

Цитата(Samotnik @  8.10.2007,  21:24 Найти цитируемый пост)
nornad,  smile  smile  smile   ОТЖОГ!!!

Цитата(Samotnik @  8.10.2007,  21:24 Найти цитируемый пост)
nornad,  Блин заговнил по-полной

no comments  smile

Добавлено через 4 минуты и 6 секунд
Цитата(Vasay @  8.10.2007,  23:46 Найти цитируемый пост)
не удеожался, вырвалось....

А что делать, ежели у нас многие препода даже основ не знают? Лично у меня в институте в своё время бейсик (теорию) вела препод, которая его не знала (она мне честно сразу призналась, что она знает паскаль, а в бейсике ни бум-бум), а препод по практике старалась меня убедить, что сидеть постоянно перед монитором очень вредно и мне это надо бросать (сам знаю, что вредно, но уже давно пристрастился и получаю кайф от этого  smile ).


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 8.10.2007, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



2 all
 smile 
PM MAIL   Вверх
Vasay
Дата 8.10.2007, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73




Цитата

В твоём коде - нигде, т.к. его сначала надо привести к такому виду, чтобы при чтении-выводе на консоль из различных потоков на консоли всякая муть не получилась. Для этого достаточно всё общение вынести за пределы сканера. Чтобы сканер только искал и производил действия. Об этом тебе уже говорили. Перечитай тему сызнова.


Ну с изнова не надо, но надо очень внимательно ознакомится с этим постом!

просмотри на второй кусок кода.

В тот код, который я тебе дал, введи переменные 

Код

    private File inputDir;
    private File outputDir;
    private FilenameFilter filter;
    private boolean includeSubfolders;
    private boolean autoDelete;


в класс Caller

Так чтобы их значения задавались при создании объекта (т.е. передай их через конструктор).




--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Maksym
Дата 8.10.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



Цитата(nornad @  8.10.2007,  20:56 Найти цитируемый пост)
Лично у меня в институте в своё время бейсик (теорию) вела препод, которая его не знала (она мне честно сразу призналась, что она знает паскаль, а в бейсике ни бум-бум), а препод по практике старалась меня убедить, что сидеть постоянно перед монитором очень вредно и мне это надо бросать (сам знаю, что вредно, но уже давно пристрастился и получаю кайф от этого  smile ). 

У меня в универе был препод (доцент!!!), который читал pascal, assembler, vb для первого-третьего курсов. Так вот, работал я потом с его бывшим одногруппником, который рассказывал, что этот препод каждый раз как выпивал хвастался одним и тем же своим жизненным достижением. Он говорил: "Я уникальный человек. Я учу программированию программистов при том, что сам в жизни не написал НИ ОДНОЙ программы!". И был очень собой горд.  smile 
PM MAIL   Вверх
Vasay
Дата 8.10.2007, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Samotnik

Ну что сделал? Или даже это не можешь сделать?


Цитата

Цитата(nornad @  8.10.2007,  20:56 Найти цитируемый пост)
Лично у меня в институте в своё время бейсик (теорию) вела препод, которая его не знала (она мне честно сразу призналась, что она знает паскаль, а в бейсике ни бум-бум), а препод по практике старалась меня убедить, что сидеть постоянно перед монитором очень вредно и мне это надо бросать (сам знаю, что вредно, но уже давно пристрастился и получаю кайф от этого  smile ). 

У меня в универе был препод (доцент!!!), который читал pascal, assembler, vb для первого-третьего курсов. Так вот, работал я потом с его бывшим одногруппником, который рассказывал, что этот препод каждый раз как выпивал хвастался одним и тем же своим жизненным достижением. Он говорил: "Я уникальный человек. Я учу программированию программистов при том, что сам в жизни не написал НИ ОДНОЙ программы!". И был очень собой горд.  smile  


У нас до ООП давали нормально, ООП пытались. Но специальность у меня не прогаммерская была, так что простительно. Хотя приходила Дама с кафедры системных программистов (на первом курсе), ее предмет информатикой назывался. Не знаю как уровень знаний, но уровень преподавания был отличный. Дала нам маткакд (реально научила пользоваться), и начала дэлфи (с этого и началось мое сознательное программирования).  И вкатила мне пару на моем самом первом экзамене, прямо пред новым годом  smile  за то что я не смог отсортировать массив (программа на паскале, которую на листочке написать надо было). 
Для меня это был хороший пинок  smile

Добавлено через 8 минут и 12 секунд
А вобще были:
С(pp) - Си то нормально дали, а вот с pp дело плохо было
Программирование под вындувз (на старом Borland-е)
Асма (не знаю как давали)я не ходил, мне так зачли - я на тот момент в конторке при универе подрабатывал, на асме (правда другой) сигнальные процессоры програмил
Программирование под Unix - прошло мимо.
Программирование (анти)вирусов - какойто антивирус для примитивного вируса написали.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Vasay,  сделал

Добавлено через 5 минут и 47 секунд
Так?
Код

class Caller implements Runnable {
  //  String msg;
    String ThreadName;
    Thread t;
    private boolean KillMe = false;
    public Caller( String Name,
    private File inputDir,
    private File outputDir,
    private FilenameFilter filter,
    private boolean includeSubfolders,
    private boolean autoDelete,
    ) 
{
    
       ThreadName = Name;
        t = new Thread(this);
        t.start();
    }

Пишит ошибку
Цитата

D:\labi\Andr\MyProject\ThreadDemo\Main\Main\Main.java:23: modifier private not allowed here
    private File inputDir,

PM MAIL   Вверх
Samotnik
Дата 8.10.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Ну вот і ўсё.      ПыПэц!! 
"Уж полночь близится, Онегина все нет..."
Или сказать проще, уже двенадцать, ответа нет, и кода тоже! 

 smile 

Пэ.Эс.
Забейте чуваки! 
Пэ.Пэ.Эс.
К сожалению главный приз никто не выиграл, но все равно спасибо за внимание и потраченное (зря, что самое  обидное) на меня время ! 

Это сообщение отредактировал(а) Samotnik - 8.10.2007, 23:33
PM MAIL   Вверх
Vasay
Дата 9.10.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Уж полночь близится, Онегина все нет..."
Или сказать проще, уже двенадцать, ответа нет, и кода тоже! 


Ну сам виноват, что затянул.... У хоть и живу в онлайне, но в оффлайн иногда по делам выхожу!

Цитата

D:\labi\Andr\MyProject\ThreadDemo\Main\Main\Main.java:23: modifier private not allowed here
    private File inputDir,


Друг мой, ты сколько лет программирование учишь????  smile  smile  smile 

Даже с примера alex_nevolin списать нормально не смог!!!

Код

class Caller implements Runnable {
  //  String msg;
    String ThreadName;
    Thread t;
    private boolean KillMe = false;

    private File inputDir,
    private File outputDir,
    private FilenameFilter filter,
    private boolean includeSubfolders,
    private boolean autoDelete,

    public Caller( String Name,
    File inputDir,
    File outputDir,
    FilenameFilter filter,
    boolean includeSubfolders,
    boolean autoDelete
    ) {
    
       this. inputDir =  inputDir;
       **** и тд.
        this.autoDelete = autoDelete;
       ThreadName = Name;
        t = new Thread(this);
        t.start();
    }


Это сообщение отредактировал(а) Vasay - 9.10.2007, 00:31


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
nornad
Дата 9.10.2007, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  9.10.2007,  02:31 Найти цитируемый пост)
К сожалению главный приз никто не выиграл

Это не беда. Беда в другом - в том, что ты с февраля месяца, похоже, даже основы Java не изучил. Компилятор тебе вполне законно выругался - нефиг в сигнатуре конструктора у параметров ставить методы доступа.
Как мне кажется, у тебя уже от напряга могла просто крыша начать ехать. В этом случае надо было отдохнуть немного, проветриться и тогда уже снова садиться за клавиатуру.

Цитата(Samotnik @  9.10.2007,  02:31 Найти цитируемый пост)
ответа нет, и кода тоже!

Кода тебе никто не обещал, а ответов уже дали несколько вариантов. Нужно было лишь выбрать тот, что больше понравился и реализовать. Как уже неоднократно говорилось, потоки в Java - легко. Ты просто ещё не видел, наверное, как работают с потоками в винде на С. smile

Кстати, ещё по поводу "кода нет".
Дело в том, что я, например, в данный момент работаю (15:00-24:00 по Гринвичу) и не имею возможности нормально отвлечься - у самого работа горит. Думаю, у других примерно так же (обычно нормальные специалисты почти постоянно чем-то заняты, хотя и не всегда основной работой). Так что, извини, если не оправдали надежд на быстрое решение проблемы.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 9.10.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Ну хорошо, последняя так сказать попытка.
А если сделать так:
Каждое действие (скан, копирование, удаление, ..)  засунуть  в 3-й (новый ) класс, затем, в классе кот  имплементирует  РанЭйбл , написать  метод  ран, и в нем вызвать всю эту красоту, а в мэйн классе, запустить, так получицца?
PM MAIL   Вверх
Vasay
Дата 9.10.2007, 00:44 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

но все равно спасибо за внимание и потраченное (зря, что самое  обидное) на меня время ! 


Знаешь, я бы написал тебе программку, если бы ты приложил хоть какие-нибудь усилия для того чтобы что-то понять.

Но вместо этого ты орал, что ты и так все знаешь! Ведь ты уже полгода программируешь на java!  (Я, кстати, на Java стал писать год тому назад, и сейчас разбираясь с j2ee, прежде чем задать вопрос на форуме, спрашиваю google)

Возможно, самое лучшее тебе сейчас получить 2, и, поняв, что за тебя никто ничего не сделает, начать учится. Хотя, на 4 курсе (удивительно как ты еще не вылетел с таким подходом) ты уже врядли что-то поймешь.

Пока писал 2 поста появилось!

Это сообщение отредактировал(а) Vasay - 9.10.2007, 00:46


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  9.10.2007,  00:30 Найти цитируемый пост)
Друг мой, ты сколько лет программирование учишь???? 

4

Цитата(nornad @  9.10.2007,  00:32 Найти цитируемый пост)
Дело в том, что я, например, в данный момент работаю (15:00-24:00 по Гринвичу)

а я с 8:00 - до  ...  сейчас!!   в воскресенье - тоже самое, в субботу, чуток по-меньше (часа на 2)
Голова действително ничего дельного не предлагает!  smile 
PM MAIL   Вверх
nornad
Дата 9.10.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  9.10.2007,  03:41 Найти цитируемый пост)
так получицца?

да
Просто, можно совместить 
Цитата(Samotnik @  9.10.2007,  03:41 Найти цитируемый пост)
Каждое действие (скан, копирование, удаление, ..)  засунуть  в 3-й (новый ) класс

и
Цитата(Samotnik @  9.10.2007,  03:41 Найти цитируемый пост)
классе кот  имплементирует  РанЭйбл


Добавлено через 2 минуты и 38 секунд
Цитата(nornad @  9.10.2007,  03:46 Найти цитируемый пост)
да

Точнее - да, но придётся всё же чуток подумать, а не тупо копировать куски кода. Копипаст vs программер пока что побеждает человека.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Vasay
Дата 9.10.2007, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Каждое действие (скан, копирование, удаление, ..)  засунуть  в 3-й (новый ) класс, затем, в классе кот  имплементирует  РанЭйбл , написать  метод  ран, и в нем вызвать всю эту красоту, а в мэйн классе, запустить, так получицца?


Ну собсно, именно это мы и хотели чтобы ты сделал!

Пиши новый класс и пости сюда, у тебя еще часа 2, потом я спать.


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 00:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  9.10.2007,  00:44 Найти цитируемый пост)
Но вместо этого ты орал, что ты и так все знаешь!

Я никогда не ору ! Мои восклицательные знаки, означают Внимание (ну вот так я привык выделять нужное  smile )

Цитата(Vasay @  9.10.2007,  00:44 Найти цитируемый пост)
удивительно как ты еще не вылетел с таким подходом

Стесняюсь спросить, каким подходом?

Цитата(Vasay @  9.10.2007,  00:44 Найти цитируемый пост)
 Хотя, на 4 курсе  ты уже врядли что-то поймешь.

 smile 
Все !  Жизнь не имеет смысла, пойду стреляться! 
Пэ.Эс.
Вот увидите, года через два, буду очень хорошим Java программером, по крайней мере, приложу все старания, и стремления чтоб  достичь этого!



PM MAIL   Вверх
Vasay
Дата 9.10.2007, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Все !  Жизнь не имеет смысла, пойду стреляться! 


Зачем же так. Вот например манагеры в автосалонах получают больше чем J2ee developer-ы (по крайней мере в Питере). Может тебе не парится, а?


Цитата

Вот увидите, года через два, буду очень хорошим Java программером, по крайней мере, приложу все старания, и стремления чтоб  достичь этого!

Можешь начинать сейчас smile

Чем разглагольствовать, лучше код напиши (небось сейчас инет в Мандриве настраиваешь  smile... Пиши класс. Завтра дам тебе инфу о настройке модема)


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  9.10.2007,  01:02 Найти цитируемый пост)
 Завтра дам тебе инфу о настройке модема

 smile  smile 
PM MAIL   Вверх
Vasay
Дата 9.10.2007, 02:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Ну, я спать. Никакой последней, так сказать попытки, мы так и не дождались. Жаль.


Samotnik,  а эта программка, случаем, не твой должок за прошлый семестр?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  9.10.2007,  02:31 Найти цитируемый пост)
а эта программка, случаем, не твой должок за прошлый семестр?

нет
PM MAIL   Вверх
alex_nevolin
Дата 9.10.2007, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ну так что будем дальше задачку решать?
Пости что получается...
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



alex_nevolin,  давай! Конец света, отложен на завтра  (11:00  smile )
Давай значит по твоему коду:
Код

public static void main(String[] args) throws Exception{
               try {
            BufferedReader br = new BufferedReader(new InputStreamReader(
                System.in));
            int threadcounter = 1;
            while (true) {
                System.out.println("Scan - To scan");
                System.out.println("Exit - To exit");
                String command = br.readLine();
                if (command.equalsIgnoreCase("Scan")) {
                    File inputDir = DyrectoryReader.read(br,"Please enter scan - input directory");
                    File outputDir = DyrectoryReader.read(br,"Please enter - output directory");
                    FilenameFilter filter = MaskReader.read(br,"Please enter mask");
                    boolean includeSubfolders = BooleanReader.read(br,"Do you wish include subfolders? (true/false)");
                    boolean autoDelete = BooleanReader.read(br,"Do you wish delete that file? (true/false)");
                    Main scaner = new Main(inputDir, outputDir,filter, includeSubfolders, autoDelete);
                    scaner.setName("Thread " + threadcounter++);
                    scaner.start();
                } else if (command.equalsIgnoreCase("Exit")) {
                    System.out.println("Good Bye!! ");
                    break;
                } else {
                    System.out.println("Unknown command, please try again");
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
           }   

Получается в твоей строке
Код

File inputDir = DyrectoryReader.read(br,"Please enter scan - input directory");

DyrectoryReader - это клас , который ты уже реализовал 
Значит, классы  MaskReader,  и BooleanReader  Должен я реализовать, и будет все работать так?
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



 smile  smile  smile 
Э..  и Где ответы ? ...  На поставленные вопросы, или , можно забить и забыть?
PM MAIL   Вверх
Vasay
Дата 9.10.2007, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

Э..  и Где ответы ? ...  На поставленные вопросы, или , можно забить и забыть? 


А где код?
Цитата

Цитата

Каждое действие (скан, копирование, удаление, ..)  засунуть  в 3-й (новый ) класс, затем, в классе кот  имплементирует  РанЭйбл , написать  метод  ран, и в нем вызвать всю эту красоту, а в мэйн классе, запустить, так получицца?


Ну собсно, именно это мы и хотели чтобы ты сделал!

Пиши новый класс и пости сюда, у тебя еще часа 2, потом я спать.





Цитата

Должен я реализовать, и будет все работать так? 


Реализовал? Я жду, что ты хоть что-то сделаешь!


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
Samotnik
Дата 9.10.2007, 22:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Vasay @  9.10.2007,  22:44 Найти цитируемый пост)
Реализовал? Я жду, что ты хоть что-то сделаешь!

Так я на правильном пути?

Цитата(Samotnik @  9.10.2007,  15:02 Найти цитируемый пост)
Значит, классы  MaskReader,  и BooleanReader  Должен я реализовать, и будет все работать так?

??
PM MAIL   Вверх
nornad
Дата 9.10.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Цитата(Samotnik @  10.10.2007,  01:53 Найти цитируемый пост)
Цитата(Vasay @  9.10.2007,  22:44 Найти цитируемый пост)
Реализовал? Я жду, что ты хоть что-то сделаешь!

Так я на правильном пути?

Блин, ты бы меньше рассуждал да больше делал - уже б давно сделал. smile
Никто не собирается тебе пошагово сообщать "да, правильно", "нет, неправильно". А уж посимвольно диктовать, что вводить - и подавно.


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Maksym
Дата 9.10.2007, 23:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

Репутация: 14
Всего: 62



ого, шестая страница пошла  smile 
PM MAIL   Вверх
nornad
Дата 9.10.2007, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1079
Регистрация: 16.2.2007
Где: в Караганде

Репутация: 16
Всего: 31



Структура твоего кода такова:
Код

class MainClass {
// класс запуска. тут же задаём вопросы пользователю. тут же создаём потоки. тут же сигналим потокам, что пора закругляться
}
class ScanThread {
// класс сканерного потока. тут ищем. тут копируем. тут регулярно проверяем, не пора ли закругляться (если пора - закругляемся)
}

Куда ж проще, блин.
По трёхклассовой структуре в третий класс выносишь общение с пользователем.

Добавлено через 3 минуты и 38 секунд
Цитата(Maksym @  10.10.2007,  02:03 Найти цитируемый пост)
ого, шестая страница пошла

Ага, у нас тут жарко - завтра парень на амбразуру лезет, а у него не то, что гранаты, а и рук-ног пока немае. smile
Вот и проводим эксперимент - отрастут ли конечности к намеченному сроку smile 


--------------------
Три достоинства программиста: Леность, Нетерпение и Гордость
Ларри Уолл
PM MAIL WWW ICQ Skype MSN   Вверх
Samotnik
Дата 9.10.2007, 23:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 8
Всего: 191



Цитата(Maksym @  9.10.2007,  23:03 Найти цитируемый пост)
ого, шестая страница пошла

 smile   УГУ
Уже ессть 3 разных версии кода, но не ожна не дописанна до конца!  smile 
Пэ.Эс.
Блин, мне уже стыдно,  это первая тема (Потоки), в которой я туплю так жестко  smile 
PM MAIL   Вверх
Vasay
Дата 9.10.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 11
Всего: 73



Цитата

ого, шестая страница пошла  smile  


а толку НОЛЬ

Цитата

3 разных версии кода


Они, впринципе, сводятся в одну... и сейчас мы от тебя и хотим, чтобы ты взял, посмотрел и собрал уже написанный за тебя код!

alex_nevolin - дал тебе почти все.

а я дал тебе пример работающего многопоточного приложения.... посмотри на него. и скомпануй код alex_nevolin -а

как это сделать, я тебе уже намекал... ты не захотел ничего делать.


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

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

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


 




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


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

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