/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import java.util.concurrent.locks.ReentrantLock;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
public static class Person
extends Thread { //Человек
super(name);
run();
}
@Override
public void run() {
Iron.ironLock.lock();
try {
Iron iron = takeIron();
Clothes clothes = takeClothes();
ironing(iron, clothes);
returnIron();
} finally {
Iron.ironLock.unlock();
}
}
protected Iron takeIron() {
System.
out.
println("Taking an Iron"); return new Iron();
}
protected Iron returnIron() {
System.
out.
println("Returning the Iron"); return new Iron();
}
protected Clothes takeClothes() {
return new Clothes("T-shirt");
}
protected void ironing(Iron iron, Clothes clothes) {
System.
out.
println(getName
() + "'s ironing the " + clothes.
name); }
}
public static class Iron {
static ReentrantLock ironLock = new ReentrantLock();
} //Утюг
public static class Clothes {//Одежда
this.name = name;
}
}
{
// your code goes here
Person diana = new Person("Diana");
Person igor = new Person("Igor");
}
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRMb2NrOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIGNsYXNzIFBlcnNvbiBleHRlbmRzIFRocmVhZCB7IC8v0KfQtdC70L7QstC10LoKCgkJcHVibGljIFBlcnNvbihTdHJpbmcgbmFtZSkgewoKCQlzdXBlcihuYW1lKTsKCQkJcnVuKCk7CgkJfQoKCQlAT3ZlcnJpZGUKCQlwdWJsaWMgdm9pZCBydW4oKSB7CgkJCUlyb24uaXJvbkxvY2subG9jaygpOwoJCQl0cnkgewoJCQkJSXJvbiBpcm9uID0gdGFrZUlyb24oKTsKCQkJCUNsb3RoZXMgY2xvdGhlcyA9IHRha2VDbG90aGVzKCk7CgkJCQlpcm9uaW5nKGlyb24sIGNsb3RoZXMpOwoJCQkJcmV0dXJuSXJvbigpOwoJCQl9IGZpbmFsbHkgewoJCQkJSXJvbi5pcm9uTG9jay51bmxvY2soKTsKCQkJfQoJCX0KCgkJcHJvdGVjdGVkIElyb24gdGFrZUlyb24oKSB7CgkJCVN5c3RlbS5vdXQucHJpbnRsbigiVGFraW5nIGFuIElyb24iKTsKCQkJcmV0dXJuIG5ldyBJcm9uKCk7CgkJfQoKCQlwcm90ZWN0ZWQgSXJvbiByZXR1cm5Jcm9uKCkgewoJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlJldHVybmluZyB0aGUgSXJvbiIpOwoJCQlyZXR1cm4gbmV3IElyb24oKTsKCQl9CgoJCXByb3RlY3RlZCBDbG90aGVzIHRha2VDbG90aGVzKCkgewoJCQlyZXR1cm4gbmV3IENsb3RoZXMoIlQtc2hpcnQiKTsKCQl9CgoJCXByb3RlY3RlZCB2b2lkIGlyb25pbmcoSXJvbiBpcm9uLCBDbG90aGVzIGNsb3RoZXMpIHsKCQkJU3lzdGVtLm91dC5wcmludGxuKGdldE5hbWUoKSArICIncyBpcm9uaW5nIHRoZSAiICsgY2xvdGhlcy5uYW1lKTsKCQl9Cgl9CgoJcHVibGljIHN0YXRpYyBjbGFzcyBJcm9uIHsKCQlzdGF0aWMgUmVlbnRyYW50TG9jayBpcm9uTG9jayA9IG5ldyBSZWVudHJhbnRMb2NrKCk7Cgl9IC8v0KPRgtGO0LMKCglwdWJsaWMgc3RhdGljIGNsYXNzIENsb3RoZXMgey8v0J7QtNC10LbQtNCwCgkJU3RyaW5nIG5hbWU7CgoJCXB1YmxpYyBDbG90aGVzKFN0cmluZyBuYW1lKSB7CgkJCXRoaXMubmFtZSA9IG5hbWU7CgkJfQoJfQoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQkvLyB5b3VyIGNvZGUgZ29lcyBoZXJlCgkJUGVyc29uIGRpYW5hID0gbmV3IFBlcnNvbigiRGlhbmEiKTsKCQlQZXJzb24gaWdvciA9IG5ldyBQZXJzb24oIklnb3IiKTsKCX0KfQoK