Java多线程(一)线程的理解和创建
2021/7/19 20:41:14
本文主要是介绍Java多线程(一)线程的理解和创建,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
进程和线程
什么是进程?
程序是静止的,运行中的程序就是进程。
进程的三个特点:
1.动态性:进程是运行中的程序,要动态的占用内存,CUP和网络等资源。
2.独立性:进程与进程之间是相互独立的,彼此有自己的独立内存区域。
3.并发性:是指同一个时间段内多个任务同时都在执行,并且都没有执行结束。并发任务强调在一个时间段内同时执行,而一个时间段由多个单位时间累积而成,所以说并发的多个任务在单位时间内不一定同时在执行 。
并行:同一时刻同时有多个在执行
什么是线程?
--线程属于进程,一个进程可以包含多个线程,这就是多线程。
--线程是一个独立执行的单元。
--线程占用CUP相对于比进程小。
--线程也支持并发性。
进程和线程的区别
进程:有独立的内存空间,进程中的数据存放空间(堆空间和栈空间)是独立的,有一个或多个线程。
线程:堆空间是共享的,栈空间是独立的,线程消耗的资源比进程小。
线程的作用:
--可以提高程序的效率,线程也支持并发性,可以有更多机会得到CPU。
--多线程可以解决很多业务模型(比如12306买车票)。
--大型高并发技术的核心技术。
注意:设计到多线程的开发可能都比较难理解。
线程的创建方式
线程的创建方式:
实现Runnable接口:
public class ThreadDemo01 implements Runnable{}
@Override public void run() { //run方法线程体 for (int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"run方法执行"+i); }
ThreadDemo01 threadDemo01 = new ThreadDemo01();
//方式一: Thread t1 = new Thread(threadDemo01); t1.start(); //方式二: new Thread(threadDemo01).start(); //方式三: Thread thread = new Thread(threadDemo01,"线程2"); thread.start();
new Thread(threadDemo01).start();
实例:
//1.实现Runnable接口 public class ThreadDemo01 implements Runnable{ //2.重写run()方法 @Override public void run() { //run方法线程体 for (int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"run方法执行"+i); } } public static void main(String[] args) { //创建Runnable接口的实现类对象 ThreadDemo01 threadDemo01 = new ThreadDemo01(); //线程使用方式一: Thread t1 = new Thread(threadDemo01); t1.start(); //线程使用方式二: new Thread(threadDemo01).start(); //线程使用方式三: Thread thread = new Thread(threadDemo01,"线程2"); thread.start(); } }
实现Runnable接口创建线程的优缺点:
缺点:代码复杂。
优点:
--线程任务类只是实现了Runnable接口,可以继续继承其他类,而且可以继续实现其他接口(避免了单继承的局限性)
--同一个任务对象可以被包装成多个线程对象
//例子 Thread t1 = new Thread(threadDemo01); Thread t2 = new Thread(threadDemo01);
--适合多个相同的程序代码的线程去共享同一个资源
--实现了解耦操作,代码可以被多个线程共享,代码和线程独立
--线程池可以放入实现Runnable或Callable线程任务对象
注意:Thread类本身也实现了Runnable接口
线程简化写法:
new Thread(new Runnable() { @Override public void run() { for (int i=0;i<10;i++){ System.out.println(Thread.currentThread().getName()+"run方法执行"+i); } } }).start();
五大状态
线程五大状态:
线程常用的方法:
方法名 | 说明 |
---|---|
setPriority(int newPriority) | 更改线程的优先级 |
static void sleep(long millis) | 在指定的毫秒数内让当前正在执行的线程休眠 |
void join() | 等待该线程终止 |
static void yield() | 暂停当前正在执行的线程对象,并执行其他线程 |
void interrupt() | 中断线程 |
public E get(int index) | 返回指定索引处的元素 |
public int size() | 返回集合中的元素个数 |
indexOf(Object o) | 查询指定元素的位置 lastIndexOf也一样,只是从尾部开始遍历 |
这篇关于Java多线程(一)线程的理解和创建的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-10百万架构师第十三课:源码分析:Spring 源码分析:Spring核心IOC容器及依赖注入原理|JavaGuide
- 2025-01-10便捷好用的电商API工具合集
- 2025-01-09必试!帮 J 人团队解决物流错发漏发的软件神器!
- 2025-01-09不容小觑!助力 J 人物流客服安抚情绪的软件!
- 2025-01-09为什么医疗团队协作离不开智能文档工具?
- 2025-01-09惊叹:J 人团队用啥软件让物流服务快又准?
- 2025-01-09如何利用数据分析工具优化项目资源分配?4种工具推荐
- 2025-01-09多学科协作难?这款文档工具可以帮你省心省力
- 2025-01-09团队中的技术项目经理TPM:工作内容与资源优化策略
- 2025-01-09JIT生产管理法:优化流程,提升竞争力的秘诀