![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Gast
Beiträge: n/a
|
Hallo,
ich habe mir einen Thread abgeleitet und will diesen nun unter anderem mittels wait() und notify() einfrieren und wiederbeleben, damit nicht zuviel Leistung verpulvert wird (als wenn ich den Thread mit einer while-Schleife "pausiere" Code:
public class NewJFrame extends javax.swing.JFrame {
public NewJFrame() {
initComponents();
}
private void initComponents() {
...
//Hier werden halt die ganen Componenten erstellt, die ActionListener zugewiesen, usw.
...
pack();
}
private void jButton2MouseClicked(java.awt.event.MouseEvent evt) {
//if(MyT.paused)
// MyT.notify();
MyT.pause();
}
private void jButton3MouseClicked(java.awt.event.MouseEvent evt) {
MyT.interrupt();
}
private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {
MyT = new myThread();
MyT.start();
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new NewJFrame().setVisible(true);
}
});
}
private javax.swing.JButton jButton1;
private javax.swing.JButton jButton2;
private javax.swing.JButton jButton3;
private javax.swing.JLabel jLabel1;
private myThread MyT;
class myThread extends Thread
{
public boolean paused = false;
public void run() {
while(isInterrupted()==false) {
if(paused) {
jLabel1.setText("paused ...");
try {
wait();
} catch(InterruptedException e) { }
}
else
jLabel1.setText("running ...");
}
jLabel1.setText("stopped");
}
public void pause() {
paused = !paused;
}
}
}
Exception in thread "Thread-2" java.lang.IllegalMonitorStateException: current thread not owner at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:474) at frames.NewJFrame$myThread.run(NewJFrame.java:139) Was mahce ich falsch? mfg, eyeless |
|
|
|
Nach oben #2 |
|
Neuer Benutzer
Registriert seit: 14.10.2004
Beiträge: 25
|
Hallo,
du brauchst den Monitor von dem Objekt, auf dem du wait oder notify aufrufst. Das bedeutet, du musst einen synchronized-Block um den Teil machen, in dem du wait oder notify aufrufst. Also in deinem Thread: Code:
synchronized(this){
wait();
}
Code:
synchronized(MyT){
MyT.notify();
}
Gruß, Max |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Thread mehrfach starten | jack77 | Desktop-Applikationen und Grafik | 18 | 07.03.2007 17:44 |
| Scheduler mit wait und notify | Ybbus | Allgemeine Java-Programmierung | 5 | 22.11.2005 10:24 |
| Thread implementierungs Problem | materthron | Allgemeine Java-Programmierung | 2 | 19.08.2005 02:21 |
| Problem bei Thread für mp3 player | Eddi | Allgemeine Java-Programmierung | 6 | 30.01.2005 16:18 |
| Thread problem | JoeBloggs | Allgemeine Java-Programmierung | 2 | 23.11.2004 09:36 |