这是关于线程最后的一节了,本节是要简单的说明一下Object类的wait和notify方法。
只用一个简单的例子来说明:
public class ThreadTest implements Runnable {
private Thread thread;
private Object lock;
public ThreadTest(Object lock) {
this.lock = lock;
thread = new Thread(this);
thread.start();
}
@Override public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(100);
}
catch (InterruptedException e) {}
System.out.println(i);
}
synchronized (lock) {
lock.notify();
}
}
public static void main(String[] args) {
Object lock = new Object();
new ThreadTest(lock);
synchronized (lock) {
try {
lock.wait();
}
catch (InterruptedException e) {}
}
System.out.println("main Thread finish.");
}
}
运行的结果为子线程执行完毕后,才结束主线程的执行。是不是和线程的join一样的效果呢?wait的意义就是将调用lock对象的线程锁上,等待notify方法来解锁,如果很好的理解它们,就可以很好的解决一些线程的问题。具体的例子就不列举了,线程所有的教程就到此结束了。都只有很简单的东西,希望对你有所帮助。
只用一个简单的例子来说明:
public class ThreadTest implements Runnable {
private Thread thread;
private Object lock;
public ThreadTest(Object lock) {
this.lock = lock;
thread = new Thread(this);
thread.start();
}
@Override public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(100);
}
catch (InterruptedException e) {}
System.out.println(i);
}
synchronized (lock) {
lock.notify();
}
}
public static void main(String[] args) {
Object lock = new Object();
new ThreadTest(lock);
synchronized (lock) {
try {
lock.wait();
}
catch (InterruptedException e) {}
}
System.out.println("main Thread finish.");
}
}
运行的结果为子线程执行完毕后,才结束主线程的执行。是不是和线程的join一样的效果呢?wait的意义就是将调用lock对象的线程锁上,等待notify方法来解锁,如果很好的理解它们,就可以很好的解决一些线程的问题。具体的例子就不列举了,线程所有的教程就到此结束了。都只有很简单的东西,希望对你有所帮助。