多线程编程

多线程编程

硬盘加载到内存:类加载:一个类一个类的加载。

为了达到多任务的效果,多线程只是其中一种

进程:是指一种“自包容”的运行程序,有自己的地址空间;

线程:是进程内部共享内存地址空间,单一的一个顺序控制流。

多任务的实现有两种方式:

一种是【基于进程】:每个进程就是一个可执行程序。

一种是【基于线程(thread)】:进程内部多任务。

子线程由主线程产生,但是一旦产生以后两者就是相等的。

启动新的线程(两种方式)
声明一个Thread的子类,并且覆盖run()方法。

实现方式:new出子类对象,调用子类的start()方法

Class mythread extends Thread{
    public void run(){覆盖方法}
}
声明一个实现Runnable接口的类,并重写run()方法。

实现方式:new出Thread对象,传入实现对象(Runnable接口这个类)再调用Thread对象的start方法。

public class YourThread implements Runnable{
    public void run(){覆盖方法}
}

多线程编程

  • 线程概述
    1.多任务处理:基于进程、基于线程(进程内部的多任务)
    2.进程是指一种“自包容”的运行程序,有自己的地址空间(独享地址空间),开销大;

线程是进程内部(共享内存地址空间)单一的一个顺序控制流,开销小。
3.基于进程的特点是允许计算机同时运行两个或更多程序。
4.基于线程的多任务处理环境中,线程是最小的处理单位。
- 创建和启动线程
1.声明一个Thread类的子类,并覆盖run()方法。
2.声明一个实现Runnable接口。 - 线程的五种状态
1.新建状态(new出Thread对象) 
2.就绪状态(执行start方法之后,执行run方法之间)
3.运行状态(执行run方法)
4.中断状态
①由于优先级,线程没有抢到CPU 
②使用sleep()使线程休眠(线程唤醒后重新参与CPU竞争)
③线程由于等待一个I/O事件被阻塞 
④wait-notify机制
⑤挂起yield(),线程强行退出,不管后续
5.死亡状态(run方法执行完后)
- 线程安全
1.描述:如果多个线程访问同一资源对象,可能会造成该资源对象数据混乱。
2.解决方法:同步(锁)。-synchronized
3.效率:线程安全的效率低 线程不安全的效率高。 - 同步问题(死锁)
1.描述:当两个线程访问一对相互依赖的同步资源时会出现死锁。
2.解决方法:wait-notify

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值