Я очень новичок в многопоточности. В настоящее время я работаю над проектом, который требует, чтобы поток запускался и по завершении уведомлял поток, который его начал, и продолжить его выполнение. Я попытался использовать логическую переменную и поручить системе распечатать некоторые строки, чтобы указать этап операции. Найдите код нижеJava - уведомляет внешнюю нить из внутренней резьбы
public class BankDatabaseSQL {
private Connection connection;
private ResultSet resultSet;
private static final String URL = "jdbc:mysql://localhost/banktesting";
private static final String USERNAME = "root";
Account account;
public final Object monitor = new Object();
private PreparedStatement setBalance;
private PreparedStatement getAccount;
int numberOfRows;
/** code omitted **/
/**
method in question
*/
public synchronized boolean authenticatePrint(){
try{
MainForm mainForm = new MainForm();
do{
ExecutorService threadExecutor = Executors.newCachedThreadPool();
mainForm.accNo = account.getAccountNumber();
threadExecutor.execute(mainForm);
wait();
}while(mainForm.verified = false); // while the verified variable of the mainForm object is set to false,
// the thread should keep waiting. The process has not gotten into this
// if statement.
if(mainForm.verified = true){
System.out.println("time to notify");
notify();
}
Второй метод должен сделать уведомляющее показан ниже
public class MainForm extends JFrame implements Runnable
{
public void run() {
new MainForm();
}
public synchronized void onVerify() {
VerificationForm form = new VerificationForm(this);
form.setVisible(true);
System.out.println("\nTime to onVerify");
if(form.verificationStatus = true){
verified = true; // variable for the mainForm object to aid in notifying the thread
System.out.println("\nVerified = true has been set!");
}
}
}
С этим кодом так много не прав. С самого начала, сколько объектов MainForm вы создаете и сколько, по вашему мнению, имеет смысл создавать? –
@SebastianRedl честно, 2 объекта mainForm создаются при запуске кода. Я поговорю об этом позже. – charles
Какой GUI Toolkit вы используете? Большинство из них имеют специальный GUI-Thread, который не должен блокироваться (хорошо - надолго). Кроме того, большинство GUI ToolKits имеют некоторую функциональность Dialog, которая готова к использованию с минимальными усилиями по настройке. Вы должны искать это. Как сказал Себастьян, здесь есть еще много вопросов ... – Fildor