//The Jews answered him, "We have a law, and by our law he ought to die, because he made himself the Son of God." (John 19:7) package com.javarush.task.task20.task2015; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; /* Переопределение сериализации */ public class Solution implements Serializable, Runnable { private transient Thread runner; private int speed; public Solution(int speed) { this.speed = speed; runner = new Thread(this); runner.start(); } public void run() { // do something here, does not matter } /** Переопределяем сериализацию. Для этого необходимо объявить методы: private void writeObject(ObjectOutputStream out) throws IOException private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException Теперь сериализация/десериализация пойдет по нашему сценарию :) */ private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); Thread thread = new Thread(this); thread.start(); } public static void main(String[] args) { } } /* Переопределение сериализации Сделайте так, чтобы после десериализации нить runner продолжила работать. Ключевые слова объекта runner менять нельзя. Hint/Подсказка: Конструктор не вызывается при десериализации, только инициализируются все поля. Требования: 1. Класс Solution должен поддерживать интерфейс Serializable. 2. Класс Solution должен поддерживать интерфейс Runnable. 3. Поле runner в классе Solution должно быть объявлено с модификатором transient. 4. В методе readObject должен быть создан новый объект типа Thread с текущим объектом в качестве параметра. 5. В методе readObject должен быть вызван метод start у нового объекта типа Thread. package com.javarush.task.task20.task2015; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; * Переопределение сериализации * public class Solution implements { private Thread runner; private int speed; public Solution(int speed) { this.speed = speed; runner = new Thread(this); runner.start(); } public void run() { // do something here, does not matter } /** Переопределяем сериализацию. Для этого необходимо объявить методы: private void writeObject(ObjectOutputStream out) throws IOException private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException Теперь сериализация/десериализация пойдет по нашему сценарию :) */ private void writeObject(ObjectOutputStream out) throws IOException { out.defaultWriteObject(); } private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { in.defaultReadObject(); } public static void main(String[] args) { } } */