synchronized与Lock的区别
- synchronized 是java jvm关键字 LOck是java 的一个接口
- Lock和synchronized有一点非常大的不同,采用synchronized不需要用户去手动释放
public interface Lock {
void lock();
void lockInterruptibly() throws InterruptedException;
boolean tryLock();
boolean tryLock(long time, TimeUnit unit) throws InterruptedException;
void unlock();
Condition newCondition();
}
![avatar][(https://img.haomeiwen.com/i2311881/cdbbe2ac586a0d43.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)]
Thread的几个重要方法:
- start()方法,调用该方法开始执行该线程;
- stop()方法,调用该方法强制结束该线程执行;
- join方法,调用该方法等待该线程结束。
- sleep()方法,调用该方法该线程进入等待。
- run()方法,调用该方法直接执行线程的run()方法,但是线程调用- start()方法时也会运行run()方法,区别就是一个是由线程调度-- 运行run()方法,一个是直接调用了线程中的run()方法!!
wait()与notify()方法是Object的方法,不是Thread的方法,wait()与notify()会配合使用,分别表示线程挂起和线程恢复。
- wait()与sleep()的区别,简单来说wait()会释放对象锁而sleep()不会释放对象锁。
线程总共有5大状态:
- 新建状态:新建线程对象,并没有调用start()方法之前
- 就绪状态:调用start()方法之后线程就进入就绪状态,但是并不-
是说只要调用start()方法线程就马上变为当前线程,在变为当前线程之前都是为就绪状态。值得一提的是,线程在睡眠和挂起中恢复的时候也会进入就绪状态哦。
- 运行状态:线程被设置为当前线程,开始执行run()方法。就是线程进入运行状态
- 阻塞状态:线程被暂停,比如说调用sleep()方法后线程就进入阻塞状态
- 死亡状态:线程执行结束
网友评论