多线程编程

来源:互联网 发布:泰国 试管婴儿 知乎 编辑:程序博客网 时间:2024/04/17 07:13

多任务处理有两种类型

  • 基于进程-----一个应用程序

  • 基于线程-----进程任务再分多任务

进程:一种“自包容”的运行程序,独享内存地址空间。特点:同时运行两个或多个程序。

线程:进程内部单一的一个顺序控制流,在进程内部,共享内存地址空间。特点:是最小的处理单位。

创建线程:

  • 声明一个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方法











0 0