黑马程序员---多线程小结
来源:互联网 发布:javascript 资源 网盘 编辑:程序博客网 时间:2024/05/01 21:29
------- android培训、java培训、期待与您交流! --
四,多线程小结。
进程:正在进行中的程序。其实进程就是一个应用程序运行时的内存分配空间。
线程:其实就是进程中一个程序执行控制单元,一条执行路径。进程负责的是应用程序的空间的标示。线程负责的是应用程序的执行顺序。
一个进程至少有一个线程在运行,当一个进程中出现多个线程时,就称这个应用程序是多线程应用程序,每个线程在栈区中都有自己的执行空间,自己的方法区、自己的变量。
jvm在启动的时,首先有一个主线程,负责程序的执行,调用的是main函数。主线程执行的代码都在main方法中。
当产生垃圾时,收垃圾的动作,是不需要主线程来完成,因为这样,会出现主线程中的代码执行会停止,会去运行垃圾回收器代码,效率较低,所以由单独一个线程来负责垃圾回收。
随机性的原理:因为cpu的快速切换造成,哪个线程获取到了cpu的执行权,哪个线程就执行。
返回当前线程的名称:Thread.currentThread().getName()
线程的名称是由:Thread-编号定义的。编号从0开始。
线程要运行的代码都统一存放在了run方法中。
线程要运行必须要通过类中指定的方法开启。start方法。(启动后,就多了一条执行路径)
start方法:1)、启动了线程;2)、让jvm调用了run方法。
创建线程的第一种方式:继承Thread ,由子类复写run方法。
步骤:
1,定义类继承Thread类;
2,目的是复写run方法,将要让线程运行的代码都存储到run方法中;
3,通过创建Thread类的子类对象,创建线程对象;
4,调用线程的start方法,开启线程,并执行run方法。
线程状态:
被创建:start()
运行:具备执行资格,同时具备执行权;
冻结:sleep(time),wait()—notify()唤醒;线程释放了执行权,同时释放执行资格;
临时阻塞状态:线程具备cpu的执行资格,没有cpu的执行权;
消亡:stop()
创建线程的第二种方式,实现Runnable接口,
步骤:
1,定义类实现Runnable接口;
2,覆盖Runnable接口的run方法;
3,通过Thread类建立线程对象;
4,将Runnable接口的子类对象作为实际参数传递,给Thread类的构造函数;
5,调用Thread类的start方法,开启线程并调用Runnable接口子类的run方法。
(继承Thread)线程代码存放的位置:Thread子类的run方法中;
(实现Runnable)线程代码存放的位置:Runnable子类中。
- 黑马程序员-----多线程小结
- 黑马程序员---多线程小结
- 黑马程序员-Java多线程小结
- 黑马程序员--学习多线程和Socket小结
- 黑马程序员--多线程小结(上)
- 黑马程序员--多线程小结(下)
- 黑马程序员_多线程学习小结
- 黑马程序员 数据库小结
- 黑马程序员_IO小结
- [黑马程序员]switch小结
- 黑马程序员 异常小结
- 黑马程序员-异常小结
- 黑马程序员-----反射小结
- 黑马程序员-----线程小结
- 黑马程序员---代理小结
- 黑马程序员_Anotation小结
- 黑马程序员--集合小结
- 黑马程序员 继承小结
- C++用new和不用new创建类对象区别
- 缓冲区
- C++实现二叉搜索树和AVL树
- Struts面试题
- 前端构建工具gulpjs的使用介绍及技巧
- 黑马程序员---多线程小结
- 初始化GDI+库进行图形图像处理
- 代码测试、调试与优化小结
- LeetCode---Sum Root to Leaf Numbers
- 【日常学习】【状压BFS】codevs2594 解药还是毒药题解
- android使用MD5算法加密密码
- USACO superbull(MST)
- ubuntu10.04安装GMP6.0.0
- 我的第一篇blog-测试功能