多线程

2017/02/12 iteye

实现多线程: 1. extends Thread   2. implement Runnable interface     线程应该用start 方法来启动。直接运行Run 方法并没有启动多线程,还是在主线程中执行run方法,跟普通方法调用一样。     3. 一般倾向于用new Thread(Runnable)这种方式而不是继承Thread,理由有二: 1. 用Runnable接口可以留下多继承的余地 2. 不会因为Thread类继承下来的锁或者方法相互干扰     sleep()     join(),相当与thread实例.wait,会释放thread实例对应的锁。对于锁应该声明一个私有的对象锁,这样不会暴露到外面去引起误用。     private final Object lock = new Object();       误用的例子如下:     比如创建一个新的Thread实例,系统都会获取Thread类上的锁。以下代码会阻止新线程的创建。 synchronized(Thread.class){ Thread.sleep(Long.MAX_VALUE); }     4. Synchronized 方法的锁是针对不同线程的,不同线程只能顺序执行该同步方法。但是同一个线程可以重复地获得某个相同的锁。也即可以调用别的Synchronized 方法,只要用的是同一把锁。

Search

    Table of Contents