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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маленький тест, :) 
:(
    Опции темы
Domestic Cat
Дата 26.9.2004, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



------------

Цитата(LSD @ 25.9.2004, 14:47)
Я думаю когда выкидывается Exception, текущий цикл сборки мусора прерывается. И такой объект будет собран только в следующий раз, при этом финализация для него уже не запускается.



Но v таком случае если бы мы поставили какой-нибудь пустой цикл послe первогo циклa пo созданию Х все бы эти объекты bыли бы собраны.


--------------------

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


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



Хочу немного усложнить старую задачку...
Код
// filename: Old.java
// Комментарий N 1

// Комментарий N 2

public class Old {
   public static void main(String[] args) {
       System.out.println("Старая задача");
   }
}

Что нужно вставить между комментарием N 1 и комментарием N 2, чтобы распечаталась другая строка, для определенности - "С новым решением" и ничего более?

Это сообщение отредактировал(а) Zandr - 27.9.2004, 17:15
PM MAIL   Вверх
Domestic Cat
Дата 27.9.2004, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Код

class C
{
   public static void main(String[] args)    
   {
       System.out.println("New");
   }
}

public class B
{
   public static void main(String[] args)    
   {
       System.out.println("Old");
   }
}


и запустить : java C
Добавлено @ 20:04
------------- next

Не меняя класса Х, создать 100000 объектов Х, причем ни один не должен бросить
иксепшн при финализации
Код

public class Test 
{
    
    public static void main(String[] args)     
    {
        for (int i = 0; i < 1000000; i++)
        {
            new X();
        }
    }
}
    
class X 
{   
    public void finalize() throws Exception
    {
        throw new Exception();
    }
}



Это сообщение отредактировал(а) Domestic Cat - 27.9.2004, 20:02


--------------------

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


Бывалый
*


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

Репутация: 2
Всего: 5



Можно так?
Код
public class Outer {
private X[] x;

public Outer() {
x = new X[1000000];
//...
}

//...

public void finalize() {
for (int i=0; i<x.length; i++) {
try {
x[i].finalize();
} catch (Exception ex) {}
}

}


Это сообщение отредактировал(а) TrivialCore - 27.9.2004, 20:58
PM MAIL   Вверх
Domestic Cat
Дата 27.9.2004, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Но в этом варианте все равно при финализации Outer все Х бросят иксепшн.

я тут как обычно мошенничаю smile.gif нужно перечитать вопрос biggrin.gif


--------------------

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


Бывалый
*


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

Репутация: 2
Всего: 5



Типа того? =)
Код
public class Test {

public static void main(String[] args) {
X[] x = new X[1000000];
//...
for (int i=0; i<x.length; i++) {
x[i].finalize();
}
}

}


Это сообщение отредактировал(а) TrivialCore - 27.9.2004, 21:17
PM MAIL   Вверх
Domestic Cat
Дата 27.9.2004, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



а NullPointerException ? или я не понял ?


--------------------

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


Бывалый
*


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

Репутация: 2
Всего: 5



Где NullPointerException?????
PM MAIL   Вверх
Domestic Cat
Дата 27.9.2004, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Дык все равно ж будеt иксепшны брошены в твоем коде smile.gif


--------------------

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


Бывалый
*


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

Репутация: 2
Всего: 5



Каждый из элементов массива x старательно создаем, чтобы не было никаких =)
Добавлено @ 21:24
Цитата(Domestic @ 27.9.2004, 21:21)
Дык все равно ж будеt иксепшны брошены в твоем коде
Почему? Разве они не: "any exception thrown by finalize() during garbage collection halts the finalization but is otherwise ignored"?

Добавлено @ 21:27
Ну и вдобавок, ессно : "finalize() is never run more than once on any object"
Добавлено @ 21:29
Или я неправильно допонял? Что, мол, сам сборщик не зовет finalize() дважды, а если мы позовем сами, то он и так позовет? sad.gif
PM MAIL   Вверх
Domestic Cat
Дата 27.9.2004, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Все равно, зовешь ты финалайз или нет, видишь ты иксепшн на экране или нет, она ведь брошена,
так ведь smile.gif


--------------------

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


Бывалый
*


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

Репутация: 2
Всего: 5



Ну, если мы вкупе с машиной ее проигнорируем, то как бы и не брошена даже tounge.gif . Но смысл понял и сдаюсь sad.gif
PM MAIL   Вверх
LSD
Дата 27.9.2004, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 210
Всего: 538



Жухлевать, так жухлевать biggrin.gif
Код

public class Test
{
 public static void main(String[] args)    
 {
   for(int i = 0; i < 1000000; i++)
   {
     new X();
   }
 }

 private static class X
 {
 }
}
   
class X
{  
 public void finalize() throws Exception
 {
   throw new Exception();
 }
}



--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Domestic Cat
Дата 27.9.2004, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Please try again: interval [0.21374533, 0.2804453], random : 0.6501763

biggrin.gif

Или написать сабкласс Х.

--------------Next

При нажатии на баттон должен появляться фрейм, содержаший изображение того, что находится
в В фрейме (в данном случае баттона, но по идее ВСЕГО).Менять можно actionPerformed и
можно добавить 1 строчку в конструктор. Пользовать Robot нельзя.


Код

public class B extends JFrame implements ActionListener
{
   JButton button;
   B()
   {
       setSize(400, 400);
       button = new JButton("Show");
       button.addActionListener(this);
       getContentPane().add(button);
       // ...
       setVisible(true);
       setDefaultCloseOperation(EXIT_ON_CLOSE);
   }
   
   public void actionPerformed(ActionEvent ae)
   {
       // ....
   }
   
   public static void main(String[] args)    
   {
       new B();
   }
}




--------------------

PM   Вверх
Zandr
Дата 28.9.2004, 05:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 433
Регистрация: 16.7.2004
Где: Новосибирск

Репутация: 9
Всего: 13



Domestic Cat Не совсем так smile.gif , но близко. Запускать нужно именно Old. Т.е. параметры запуска не менять.

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

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

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


 




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


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

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