1、线程:进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。
线程不能独立存在,必须依赖进程,在进程中运行每一个进程至少有一个线程,被称为主线程。
2、多线程的优缺点:
优点:
*提高界面的响应速度
*提高后台程序加载速度
*更好的利用多线程CPU资源,提高效率
缺点:
*如果线程过多,系统需要花费大量时间处理线程切换,因此处理速度会降低,CPU支持的线程越多,多线程就越有优势。
3、线程随机性:正常情况下,线程是随机的,谁先执行是不确定的,如果我们想要控制顺序,需要自己编写代码。
4、Java多线程代码编写:
(1)继承Thread,重写run方法
(2)实现Runnable,new Thread();
(3)Timer和TimerTask
(4)直接new Thread(没有任何意义,不是抽象类,可以直接拿来使用)
5、线程的生命周期:
(1)诞生(new Thread)
当创建一个Thread实例的时候,处于未启动状态。
(2)就绪
当start之后,线程就处于就绪状态,时刻准备着被CPU执行。
(3)运行
线程得到了CPU资源进行运算,但是只有一小段时间片,时间到了之后,CPU就切换到其他线程,当前线程又变为就绪状态。
(4)死亡
当run执行结束,或者中途被其他线程杀死。
*自然终止:正常运行run()方法结束后终止。
*异常终止:调用stop()等方法杀死。
(5)堵塞/阻塞
睡眠:sleep(long ms)
等待:wait();
队列:join
(6)死锁(不属于正常的生命周期)
6、线程同步
synchronized(){
this.n=n
}//锁,解决线程同步问题,加锁
*synchronized:线程同步,让线程排队
*锁:队伍中的信物,使用不同的锁,就有不同的排伍。
7、线程终极奥义:并发
8、synchronized:通过synchronized关键字来实现,所有加上synchronized和块语句,在多线程访问的时候,同一时刻只能有一个线程能够用synchronized修饰的方法或者代码块。
9、volatile:用volatile修饰的变量,线程在每次使用变量时候,都会读取变量修改后的值。
标签:java,Thread,synchronized,线程,进程,多线程,CPU From: https://www.cnblogs.com/yiblue/p/17019704.html