上面就是线程的生命周期。
一个应用程序只有一个进程,一个进程可以拥有多个线程
进程间通信不方便,但线程非常方便
进程独享资源,而线程可以共享它所属的进程的资源
进程结束,其中的线程也会直接销毁
多线程帮助你写出CPU最大利用率的高效程序
java线程的处理方式:一、继承Thread类(1.外部类 2.匿名内部类) 用来解决耗时的程序
二、实现runnable接口
在一个线程中调用另一个线程中的join 则当前线程阻塞,让另一个线程先执行,当前再执行(与优先级无关)
sleep状态不能释放锁
yield与sleep的差别:
1.sleep给其他线程运行的机会,但不考虑其他线程的优先级;但yield只会让位或更高优先级的线程;
2.sleep有异常,yield没有异常
3.当线程执行了yield之后就转到就绪状态,而执行了sleep之后则会进入到阻塞状态
yield与join的差别:
1.yield是静态方法(需要用类调用) join是实例方法
2.yield只会让位给相同或更高优先级的线程,join与优先级无关
3.join有异常
synchronized 解决同步块的方法
死锁:产生的四个条件:(1)互斥
(2)请求与保持条件
(3)不可强制剥夺
(4)循环等待