多任务处理有两种类型
-
基于进程-----一个应用程序
-
基于线程-----进程任务再分多任务
进程:一种“自包容”的运行程序,独享内存地址空间。特点:同时运行两个或多个程序。
线程:进程内部单一的一个顺序控制流,在进程内部,共享内存地址空间。特点:是最小的处理单位。
创建线程:
-
声明一个Thread类的子类,并覆盖run()方法----运用(new子类对象,调用start()方法)
-
编写一类实现Runnable接口,并实现run()方法-----运用(new Thread对象,将子类的对象传入Thread对象中,然后调用start()方法)
线程有五种状态:
-
新建状态:new出Thread对象
-
就绪状态:执行start()方法之后,执行run()方法之前
-
运行状态:执行run()方法
-
中断状态
-
死亡状态
中断状态的原因:
-
由于优先级的关系,线程没有抢到cpu。
-
使用sleep()方法使线程睡眠
-
线程由于等待一I/O时间呗阻塞
-
wait --- notify机制
-
挂起,使用yield()方法,线程已显示出让cpu控制权
多线程安全性问题:描述:如果多个线程访问同一资料对象,可能会造成该对象的数据混乱。
解决:同步(锁)----synchronized进行标识
效果:线程安全,但效率低。
同步:新问题(死锁)----当两个线程访问一对相互依赖的同步资源时会出现死锁
解决:wait-----notify方法