sleep()方法是一个静态方法。
重写的方法不能抛出的异常不嫩刚和原方法抛出的异常不同。在此,重写Run()方法时,不能使用throws Exception的方法抛出异常,因为原来run()是通过try—catch的方法抛出的异常!
run()方法结束当前线程就结束了!
停止一个线程最好的方法是用当前线程明调用shutDown()方法,不要使用interrupt()方法,更不要使用stop()方法!
线程同步
锁机制(锁定当前线程对象):锁定某个方法和锁定相关代码段!为了最大程度的避免死锁情况的产生可以扩大锁的粒度,即尽量大范围的锁住当前锁对象所涉及的东西!
线程:一个程序里边不同的执行路径!
进程:一个Class文件 静态的方法!
wait与sleep的区别:
wait是object的方法,线程在调用wait方法后会将所放开,其他线程可以访问锁中的内容;sleep是Thread中的方法,及时在sleep期间,当前线程对象也会将该线程锁住。
public class TT implement Runable{
int b = 100 ;
public synchronized void m1() throws Exception{
b = 1000 ;
Thread.sleep(5000) ;
System.out.println(" b = " + b) ;
}
public void m2() throws Exception {
Thread.sleep(2500) ;
b = 2000 ;
}
public void run() {
try{
m1() ;
}catch (Exception e) {
e.printStackTrace() ;
}
}
public static void main (String args []) throws Exception {
TT tt = new TT();
Thread t = new Thread (tt) ;
t.start() ;
tt.m2() ;
System.out.println( tt.b ) ;
}
}