java多线程
1,run(),start()
run()方法的访问控制符号必须是public的,返回值void
start()调用start()方法使线程处于可运行状态,这意味着它可以由JVM调度并执行。这并
不意味着线程就会立即运行
2,sleep(),yield()
sleep 方法可以使低优先级的线程得打执行的机会,
同样也可以让高的优先级有执行的机会。
yield()方法只能使同优先级的线程有执行的机会。
3,wait(),notify().notify()都是由java.lang.Object类提供。
三个方法用来协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用这个
三个方法。
wait(),将当前线程处于休息状态,同时释放锁标志。
notify(),唤醒线程。
------------------------------------------------------------------
当线程执行了对一个特定对象的wait()调用时,那个线程被放到与那个对象相关的等待池中。
此外,调用wait()的线程自动释放对象的锁标志。
对一个特定对象执行notify()调用时,将从对象的等待池中移走一个任意的线程,并放到锁
标志等待池中,那里的线程一直在等待,直到可以获得对象的锁标志。notifyAll()方法将从对
象等待池中移走所有等待那个对象的线程并放到锁标志等待池中。只有锁标志等待池中的线程
能获取对象的锁标志,锁标志允许线程从上次因调用wait()而中断的地方开始继续运行。
注意,不管是否有线程在等待,都可以调用notify()。如果对一个对象调用notify()方法,而在这个对象的锁标志等待池中并没有线程,那么notify()调用将不起任何作用。
1,run(),start()
run()方法的访问控制符号必须是public的,返回值void
start()调用start()方法使线程处于可运行状态,这意味着它可以由JVM调度并执行。这并
不意味着线程就会立即运行
2,sleep(),yield()
sleep 方法可以使低优先级的线程得打执行的机会,
同样也可以让高的优先级有执行的机会。
yield()方法只能使同优先级的线程有执行的机会。
3,wait(),notify().notify()都是由java.lang.Object类提供。
三个方法用来协调多个线程对共享数据的存取,所以必须在synchronized语句块内使用这个
三个方法。
wait(),将当前线程处于休息状态,同时释放锁标志。
notify(),唤醒线程。
------------------------------------------------------------------
当线程执行了对一个特定对象的wait()调用时,那个线程被放到与那个对象相关的等待池中。
此外,调用wait()的线程自动释放对象的锁标志。
对一个特定对象执行notify()调用时,将从对象的等待池中移走一个任意的线程,并放到锁
标志等待池中,那里的线程一直在等待,直到可以获得对象的锁标志。notifyAll()方法将从对
象等待池中移走所有等待那个对象的线程并放到锁标志等待池中。只有锁标志等待池中的线程
能获取对象的锁标志,锁标志允许线程从上次因调用wait()而中断的地方开始继续运行。
注意,不管是否有线程在等待,都可以调用notify()。如果对一个对象调用notify()方法,而在这个对象的锁标志等待池中并没有线程,那么notify()调用将不起任何作用。