实现多线程:
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 方法,只要用的是同一把锁。
10万+

被折叠的 条评论
为什么被折叠?



