Java多线程
1、一个进程就是一个正在运行的应用程序的实例,程序段+相关的数据段+PCB构成了进程实体。
2、进程由两个部分组成:
(1)操作系统来管理这个进程的内核对象;
(2)这个进程拥有的地址空间。
3、线程除了能够访问进程的资源外,每个进程还拥有自己的栈。
4、引入线程的好处:由于线程比进程更小,基本上不拥有系统资源,因此对线程的调度所付出的开销就会小很多,更能高效地提高系统内多个程序间并发执行的程度。
5、进程和线程
(1)在引入线程的os中,通常把进程作为操作系统中能资源分配的基本单位,线程是操作系统独立运行和独立调度的基本单位;
(2)线程可以看成是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程的切换开销小。
6、Java的线程是通过java.lang.Thread类来实现的
7、线程的两种模式:
(1)协作式:一个线程保留对CPU的控制知道它自己决定放弃;
(2)抢占式:系统可以任意的从线程中夺回对CPU的控制权,再把控制权分配给其它的线程,两次切换的时间间隔叫做时间片。
8、无论synchronized关键字加载方法上还是对象上,它取得的锁都是在对象上。
9、wait和sleep的区别:
(1)来源不同:sleep是Thread类提供的方法,wait继承自object;
(2)代码位置不同:wait需要写在synchronize语句块里面;
(3)是否释放锁定对象:调用wait方法需要释放锁定对象,sleep时别的线程也不可以访问锁定对象。