网站首页 > 精选教程 正文
线程的介绍
在介绍线程之前,我们有必要先来了解一下计算机程序运行的机制。我们的计算机里面安装了各种各样的软件,它们是由程序+文档+数据构成的。只有这三个都存在,我们才能称之为软件。软件运行的基本单元是进程(Windows中一个exe文件就是一个进程),进程是一段可执行的二进制代码,通过获取CPU执行片来运行。进程是轻量级的线程,它是CPU调度的最小单元,线程共享进程的内存空间。
创建线程的四种方式
- 通过继承java.lang.Thread类
- 通过实现java.lang.Runnable接口
- 通过实现java.util.concurrent.Callable接口
- 通过java.util.concurrent.Executor来创建线程池
注:Runnable接口和Callable的区别在于,前者线程执行完之后,没有返回值,而后者有返回值。
线程的使用场景
线程出现的初衷是为了更好的用户体验,我们可以想象,如果你在用word写文档时,打一个字保存一次,那么将是十分糟糕的一件事。线程让我们专注于自己的核心业务,word中会有一个线程可以帮助我们自动保存文件。这是一个极其简单的例子,我要介绍的是,在web开发中,对于每个客户端的请求,我们都必须在服务器创建一个线程为用户服务。如果我们采用单线程轮询服务的方式会导致大量的延时,用户体验较差。当然,多线程也不是没有缺点,如果服务器开启大量的线程可能会造成宕机。服务器的最大线程量取决于你的带宽,网络I/O,磁盘I/O以及CPU的执行效率。为此我们可以考虑在服务器维护一个固定数量的线程池,来处理用户的请求。技术是不断迭代的,在当今信息爆炸的时代,软件的架构必须与时并进。下一篇讲述的是web应用的架构演化。
线程总结
Java语言从一开始就是为多线程而设计的,通过多线程我们可以大大提高CPU的执行效率(特别是多核cpu),当然,线程本身也是有缺陷的,大量的线程间切换也会成为性能的瓶颈。此文所讲的均为线程的基础部分,关于线程之间的数据共享,数据交换以及多线程下的数据安全问题都是非常重要的,后续都会讲到。java.util.concurrent是java并发编程的重要工具包,其中的数据结构,如Map,Set,List都有相对应的线程安全实现类
- 上一篇: 这篇文章带你彻底理解线程
- 下一篇: Java 是如何实现线程间通信的?
猜你喜欢
- 2024-12-05 JAVA创建线程的三种方式、创建线程池的四种方式
- 2024-12-05 Java多线程详解——一篇文章搞懂Java多线程
- 2024-12-05 Java 中虚拟线程
- 2024-12-05 Java守护线程与用户线程的区别
- 2024-12-05 Java守护线程简介
- 2024-12-05 java线程和进程的区别
- 2024-12-05 什么是JAVA?想学习却不知道从哪开始?
- 2024-12-05 什么是Java?你知道不?
- 2024-12-05 Java: 虚拟线程
- 2024-12-05 Java 是如何实现线程间通信的?
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)