线程和进程区别
sleep和wait区别
sleep 是Thread类中方法,wait是Object类中方法
sleep 可以任何地方使用,wait只能用在synchronized方法或者synchronized代码块中
sleep 不会释放锁,wait会释放锁
thread和runnable区别
Thread类继承了Runnable接口,所以Thread类对象也可以实现Runnable接口
一般业务实现在run方法体内,所以一般建议Runnable接口实现类
线程返回值(三种实现方式)
方式一(主线程等待子线程返回结果)
public static void main(String[] args) throws Exception{
Thread t = new Thread(new Runnable() {
public void run() {
return "hello";
}
})
t.start();
}
方式二(使用Thread.join()方法)
方式三(使用Callable接口或线程池)
线程状态
NEW \ RUNNABLE \ BLOCKED \ WAITING \ TIMED_WAITING \ TERMINATED
NEW 创建后,还未启动
RUNNABLE 运行中
WAITING 线程等待,如:调用Object.wait()方法
BLOCKED 线程被阻塞,等待获取排它锁,如:调用Object.wait()方法
TIMED_WAITING 线程等待,如:调用Object.wait()方法,指定时间,系统自动唤醒
TERMINATED 线程已结束
线程中断
调用Thread.interrupt()方法
线程中断,线程会抛出InterruptedException异常
