![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程&并发编程
文章平均质量分 72
Java多线程技术、并发编程
凤文Studying
一位正在学计算机、学医的大学生,
来到CSDN学习、分享和交流。
学习嘛,有输入也要有输出。
因为兴趣和热爱,我们一起成长!
展开
-
Java多线程_01 进程和线程
进程和线程进程线程进程和线程进程进程是并发执行程序在执行过程中资源分配和管理的基本单位。进程可以理解为一个应用程序的执行过程,应用程序一旦执行,就是一个进程。如果你是windows用户,你可以按ctrl+shift+esc组合键,打开任务管理器:可以查看你电脑上正在运行的所有进程。看我这里有多个chorme和wechat的程序在运行,这说明一个应用程序可以有多个进程。线程线程是进程的一个执行单元,是进程内可调度实体。线程是比进程更小的独立运行的基本单位。线程也被称为轻量级进程。在“原创 2022-04-02 11:36:33 · 137 阅读 · 0 评论 -
Java多线程_02 创建线程的五种方式
创建线程继承Thread类实现Runnable接口三级继承Thread类通过继承Thread并且重写其run()方法,run()方法中定义需要执行的任务。创建后的子类通过调用start()方法即可执行线程方法。通过继承Thread实现的线程类,多个线程间无法共享线程类的实例变量。创建的是不同的Thread对象,自然不共享资源。原创 2022-04-03 13:55:48 · 599 阅读 · 0 评论 -
Java多线程_03 Thread类与Runnable接口的区别
Thread类与Runnable接口的区别通过继承Thread类的方式通过实现Runnable接口的方式实现Runnable接口避免多继承局限。实现Runnable接口可以更好地体现共享的概念。Runnable接口是Thread类的父类。卖票案例通过继承Thread类的方式public class SaleTicketsThread extends Thread { private int tickets = 10; //一共有10张票 public SaleTicketsT原创 2022-04-04 08:46:48 · 211 阅读 · 0 评论 -
Java多线程_04 线程start()和run()的区别
start()和run()的区别run()如果这个线程使用单独的Runnable运行对象构造,则调用该Runnable对象的run方法; 否则,此方法不执行任何操作并返回。start()导致此线程开始执行; Java虚拟机调用此线程的run方法。public class UserThread extends Thread{ @Override public void run() { System.out.println(Thread.currentThread().ge原创 2022-04-11 15:00:52 · 128 阅读 · 0 评论 -
Java多线程_05 线程的优先级
线程的优先级Java线程的优先级范围是1~10,默认优先级是5,10最高。线程的优先级仍然无法保障线程的执行次序,只是说优先级高的线程获取CPU资源的概率较大,优先级低的并非没机会执行。主线程的优先级是5。原创 2022-04-12 10:56:25 · 460 阅读 · 0 评论 -
Java多线程_06 定时线程的任务调度
定时线程的任务调度Timer类线程调度任务以供将来在后台线程中执行的功能。任务可以安排一次执行,或定期重复执行。对应于每个Timer对象是单个后台线程,用于依次执行所有定时器的所有任务。定时线程schedule(),延时不追加执行任务。定时线程scheduleAtFixedRate(),延时追加执行任务。不追加执行任务的意思是,如果我们定时线程的首次调度时间已经过去了,那么就立即从当前时刻算起,每隔一段时间调度一次任务,之前没执行的就忽略了;而追加执行任务就是之前没执行的要补充回来。原创 2022-04-13 13:01:06 · 249 阅读 · 0 评论 -
Java多线程_07 接口同步回调和异步回调
同步回调和异步回调概念介绍同步回调模拟异步回调模拟概念介绍同步调用一种阻塞式调用,调用方要等待对方执行完毕才返回,它是一种单向调用。我们之前所遇见的几乎都是同步调用,比如我们在A方法中调用B方法,必须等到B执行完,才能执行A中在B方法下面的代码,或者说,一定是被调用的B先执行完。异步调用一种类似消息或事件的机制,不过它的调用方向刚好相反,接口的服务在收到某种讯息或发生某种事件时,会主动通知客户方。也就是说,异步调用不需要等待被调用方执行完毕之后再往下执行,它是不许要这个等待的。回原创 2022-04-15 15:40:34 · 1550 阅读 · 0 评论 -
Java多线程_08 线程的生命周期与状态
线程的生命周期线程的生命周期线程的睡眠线程的让步线程的合并守护线程线程中断线程的死亡线程的生命周期在线程的生命周期中,它要经过新建(new)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。当线程启动以后,它不可能一直“霸占”着CPU独自运行,所以CPU需要在多条线程之间切换,于是线程状态也会多次在运行、阻塞之间切换,于是线程状态也会在运行、阻塞之间切换。新建状态,当Java程序使用new关键字创建了一个线程之后,该线程就处于新建状态,此时仅原创 2022-04-16 15:53:11 · 301 阅读 · 0 评论 -
Java多线程_09 线程的同步和安全
线程的同步和安全什么是线程安全问题?线程的同步安全同步代码块什么是线程安全问题?如果一个资源(变量、对象、文件、数据库)可以同时被多个线程使用就会出现数据不一致问题,也就是我们说的线程安全问题,这就是线程安全问题。这样的资源被称为共享资源或临界区。设计并发编程的目的是为了使程序获得更高的执行效率,但绝不能出现数据一致性(数据准确)问题。如果并发程序连最基本的执行结果准确性都无法保证,那并发编程没有任何意义。public class Test implements Runnable {原创 2022-04-17 14:02:16 · 139 阅读 · 0 评论 -
Java多线程_10 线程的锁
线程的锁死锁线程的死锁线程的明锁线程的公平锁与非公平锁死锁死锁定义死锁是指两个或多个进程由于竞争资源而造成的一种僵局,若无外力作用,这些进程无法向前推进。死锁产生原因竞争资源:竞争不可抢占资源或可消耗性资源时可能会导致死锁。进程推进顺序不当;产生死锁必要条件必要条件:四个条件都满足,才能发生死锁,也必然能发生死锁。互斥条件:进程之间必须互斥使用某些资源才可能引起死锁;请求保持:进程已经占有至少一个资源,又提出新的资源请求;不可抢占:进程已经占有的资源不能被剥夺;循环等待:死锁原创 2022-04-26 19:53:00 · 289 阅读 · 0 评论 -
Java多线程_11 线程通信
线程通信线程通信机制什么是线程通信为什么需要线程通信线程通信的方式线程通信机制什么是线程通信线程间同步可以归纳为线程间通信的一个子集,对于线程通信指的是两个线程之间可以交换一些实时的数据信息。为什么需要线程通信线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能称为一个整体,线程间通信就成为整体的必用方式之一。当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时还会使开发人员对线程任务的处理过程中进行有效的把控和监督。线程通信的方式...原创 2022-05-01 10:09:23 · 195 阅读 · 0 评论