多线程

实现多线程:

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个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值