码迷,mamicode.com
首页 > 编程语言 > 详细

多线程编程

时间:2016-05-13 02:28:04      阅读:213      评论:0      收藏:0      [点我收藏+]

标签:

多线程编程

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

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

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

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

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

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

一种是【基于线程(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

多线程编程

标签:

原文地址:http://blog.csdn.net/qq635720747/article/details/51347639

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!