Хоть убей не понимаю, что и где нужно расставить.
Как понять работу программы, что и как нужно сделать?
/**
Расставь wait-notify.
Пример вывода:
Thread-0 MailServer received: [Person [Thread-1] wrote an email 'AAA'] in 1001 ms after start
Требования:
1. Объекты класса MailServer должны работать корректно в многопоточном окружении.
2. Объекты класса Person должны работать корректно в многопоточном окружении.
3. В методе run класса MailServer должен присутствовать synchronized блок, монитор - mail.
4. В методе run класса Person должен присутствовать synchronized блок, монитор - mail.
*/
public class Solution {
public static void main(String[] args) {
Mail mail = new Mail();
Thread server = new Thread(new MailServer(mail));
Thread amigo = new Thread(new Person(mail));
server.start();
amigo.start();
}
}
public class Mail {
private String text;
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
}
public class MailServer implements Runnable {
private Mail mail;
public MailServer(Mail mail) {
this.mail = mail;
}
@Override
public void run() {
long startTime = System.currentTimeMillis();
//сделайте что-то тут - do something here
String name = Thread.currentThread().getName();
long endTime = System.currentTimeMillis();
System.out.format("%s MailServer received: [%s] in %d ms after start", name, mail.getText(), (endTime - startTime));
}
}
public class Person implements Runnable {
private final Mail mail;
public Person(Mail mail) {
this.mail = mail;
}
@Override
public void run() {
String name = Thread.currentThread().getName();
try {
Thread.sleep(1000);
//сделайте что-то тут - do something here
mail.setText("Person [" + name + "] wrote an email 'AAA'");
//сделайте что-то тут - do something here
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}