Java 线程
来源:互联网 发布:郭正亮 知乎 编辑:程序博客网 时间:2024/04/30 18:31
Java 线程(Thread)
为什么需要使用线程:
我们知道,一般程序都是以一个由上至下的运行方式运行的,不完成上一步的时候,是无法进入下一步的执行的。可是我们有时候需要在一个程序同时去做两个不同的任务,各自之间互不干涉,那么根据程序的执行过程,该如何解决呢?
答案就是使用线程,所谓线程,就是一个程序中最小的执行单元,一个程序在运行时就是一个进程,一个进程可以包含多个线程,这样就允许了一个程序同时去做不同的任务。所以总结的说,我们需要使用线程来让程序在同一时间做不同的事情,并且互不干涉。
### 注:
- 程序是包含了所有执行文件、数据文件、图像文件以及各种文档的资源集合,存储在电脑磁盘里
- 进程是一个程序在运行时所需要的所有资源集合,包含了代码、数据、堆栈、变量等,就像一台电脑。
- 线程是进程的子集,每一个线程可以看作是进程中的一个执行单元,就像CPU。
线程的基本特点:
在不同的语言中,线程有不同的实现方式,但都有共同的基本特征:
- 没有属于自己的内存空间,所有使用的空间都是由进程统一安排分配
- 在线程中使用的数据会存放到属于自己的栈中,但栈中的数据我们是知道的,是不会保留下来的 :cry:
- 线程的上下文切换是比进程要快很多倍的,而且新建一个线锁需要的时间开销也是少于进程的;但有优点就一定会有缺点,线程的开销是很大的,每创建一个线程都至少要分配512KB甚至是1MB字节的内存,还有的线程及进程的区别可以去看有关操作系统的书
使用线程的方法:
- 继承Thread类
- 实现Runnable接口
虽然都可以实现线程的控制,但是我们在实际中却用到第二种方法比较多,原因就是我们有时候需要继承不止一个类,这时如果我们不去实现Runnable接口,我们该如何使这个类编程线程类呢?:happy:
实现线程类需要注意的地方:
我们想让线程去做的任务都写在run方法里
线程类创建后我们需要去启动线程,而不是调用run方法,不然就仍旧还是方法调用
启动线程的方法
实现Runnable接口:
class Ball implements Runnable{public void run(){ System.out.println("hello thread"); //我们想使用多线程实现的内容}}class UseBall {Ball ball = new Ball();new Thread(ball).start();}
继承Thrad类:
class Ball extends Thread{public void run(){ System.out.println("hello thread"); //我们想使用多线程实现的内容}}class UseBall {Ball ball = new Ball();ball.start();}
使用线程进行操作的时候注意添加异常操作
总结:
综上所述,线程的使用方法以及一些特点就在这里了。个人理解其使用的条件就是想让程序同时完成不同的任务时,使用多线程实现。
多线程是java重要的的特点之一,利用多线程我们可以完成很多特殊的功能,比如:弹球游戏、坦克大战和聊天室等等。
0 0
- Java线程:什么是线程
- Java线程:线程池
- java线程--线程退出
- JAVA-线程/线程锁
- Java线程:什么是线程
- Java线程:线程中断
- Java线程:线程状态
- Java线程: 线程调度
- Java线程:线程交互
- java--线程--线程池
- java 线程
- Java线程
- java线程
- java线程
- Java线程
- Java线程
- java线程
- JAVA 线程
- poj_2533 Longest Ordered Subsequence(最长上升子序列)
- Ajax最实用的小例子集合
- 图灵杯 爬楼梯
- linux sed 插入 字符串 到 空文件
- 浏览器如何渲染HTML
- Java 线程
- 事务提交操作遇到的问题
- 鼠标点击li元素,弹出各自索引值
- html5 中新添加的标签以及新增表单类型
- 『解决办法』UBUNTU系统中选中变成删除
- CentOS 7 安装Boost 1.61
- CSS选择器
- Struts2中常用标签
- Spring中Bean的作用域