
多线程
文章平均质量分 84
思念寄给宇宙
这个作者很懒,什么都没留下…
展开
-
JAVASE学习笔记 一文带你理解操作系统的进程与线程
进程与线程对于程序员来说,真的是天天都可以看到。但天天见,不见得我们原创 2021-01-25 11:20:52 · 488 阅读 · 0 评论 -
JAVASE学习笔记 多线程代码实现的多种方式
目录1.多线程的实现方式1.1 多线程代码实现方法一:继承Thread类1.2 多线程代码实现方法二:实现Runnable接口1.3 多线程代码实现方法三:实现Callable接口总结我们都了解在命令窗口输入Java.exe命令会启动JVM,等于启动了一个应用程序。开启JVM相当于开启一个线程,该线程会自动的启动一个"主线程",然后主线程去调用某个类的main()方法。所以main()方法运行在主线程。那么大家是不是有这样一个疑问:JVM的启动是多线程的吗? 答案是肯定的,JVM的启动至少原创 2021-01-25 16:04:07 · 449 阅读 · 0 评论 -
JAVASE学习笔记 多线程中的线程调度与线程控制
目录1.线程调度2.线程控制2.1 线程控制之休眠线程2.2 线程控制之守护线程多线程中的线程调度与线程控制是使用多线程的常见的操作,掌握这些对于我们使用多线程更加有帮助。1.线程调度假如我们的计算机只有一个CPU,那么CPU在某一个时刻只能执行某一条指令。线程是并发的,只有抢到CPU时间片, 也就是使用权,才可以执行命令。那么Java是如何对线程进行调度的呢?在Java中是通过调度模型(抢占式调度模型)来进行线程调度的。有两种调度模型:分时调度模型与抢占式调度模型。两种调度模型模型原创 2021-01-26 16:13:53 · 583 阅读 · 0 评论 -
JAVASE学习笔记 实例探索多线程安全问题
实例探索多线程安全问题1.利用继承Thread类的方式卖电影票2.实现Runnable接口的方式卖电影票3.线程安全问题的实例发生临近春节,各大电影院都在筹备准备上映贺岁大片。假设某家电影院持有唐探3的票100张,而且它总共有三个售票窗口,请设计一个程序模拟该电影院进行售票。1.利用继承Thread类的方式卖电影票事件具体分析1.三个窗口其实就是三个线程2.定义票的数量为100张(为静态变量,被3个线程所共享3.创建线程对象,启动线程,每卖一张票,票的数量就减1原创 2021-01-27 21:38:13 · 1504 阅读 · 5 评论 -
JAVASE学习笔记 多线程安全问题的解决方式--同步代码块、同步方法以及Lock锁的使用
线程安全问题的解决方式1.同步代码块如何解决线程安全问题呢?前面我们已经说过了解决思路:对于多条共享数据的语句,只能让一个线程都执行完,在执行过程中,其他线程不可以参与执行。为了解决这个问题,Java的多线程支持引入同步监视器来解决这个问题。使用同步监视器的方式有两种:同步代码块以及同步方法。1.同步代码块同步代码块的语法格式如下:sychronized(同步监视器对象){//不能在括号中直接new对象,new了就没效果了需要被同步的代码块}同步代码块注意事项这个同原创 2021-01-28 22:01:18 · 698 阅读 · 3 评论 -
JAVASE小白笔记 多线程通信(线程之间的等待唤醒机制)
线程通信1.线程通信概述2.实例阐述线程间的等待唤醒机制生产者与消费者问题,也称为有限缓冲问题,是多线程同步问题的经典案例。今天我们来详细的来进行探索下。1.线程通信概述生产者与消费者问题描述了两个或者多个共享固定大小缓冲区的线程–即所谓的"生产者"和"消费者",在实际运行中发生的问题。生产者的主要作用是生成一定量的数据放到缓冲区中,然后重复此过程。与此同时消费者也在缓冲区消耗这些数据。该问题的关键就是要保证生产者不会在缓冲区满时加入数据,消费者也不会在缓冲区空时消耗数据。生产者与消原创 2021-01-30 11:50:19 · 435 阅读 · 1 评论 -
JAVASE学习笔记 走进Java的内存模型
走近Java的内存模型1.为什么要有内存模型1.1 计算机内存模型相信大家在网上也看到过很多Java内存模型的文章,但很多人可能和我一样读完之后还是没有理解。作为一名Java小白,经过一段时间的学习,对Java内存模型有所了解。本篇文章,就来系统整体的对Java内存模型作以解释。目的也非常简单,希望大家读完后能知道Java内存模型是什么,为什么要用Java内存模型,以及Java内存模型可以解决什么问题等。1.为什么要有内存模型在介绍Java内存模型时,首先我们需要了解计算机的内存模型,因为Java内原创 2021-02-02 18:38:21 · 570 阅读 · 2 评论 -
JAVASE学习笔记 全方位解析volatile关键字以及volatile面试题汇总
全方位解析volatile关键字以及volatile面试题汇总1.图解volatile是如何保证可见性2.volatile底层原理通过前面走进Java内存模型的文章(有兴趣的朋友可以搜下我主页的这篇文章),我们知道了volatile的语义就是保证共享变量对所有线程可见性以及指令重排优化。那么,它的底层是如何让保证可见性和禁止指令重排的呢?1.图解volatile是如何保证可见性我们先从一个实例进行引入:假设flag变量的初始值为false,现在有两个线程t1和t2要访问它,如果线程t1执行fla原创 2021-02-03 21:59:37 · 439 阅读 · 0 评论 -
JavaSE学习笔记 Java线程中的常见状态以及状态转换
Java中实现并发的主要手段是多线程。线程是操作系统里面的一个概念,Java语言里面的线程本质上就是操作系统的线程,它们是一一对应的。原创 2021-02-06 22:51:39 · 439 阅读 · 2 评论 -
JavaSE学习笔记 匿名内部类方式实现多线程程序以及定时器的使用
匿名内部类方式实现多线程程序以及定时器的使用1.匿名内部类方式实现多线程程序2.定时器的概述和使用在前面的文章中,我们已经讨论了创建多线程的三种方式:1.通过继承Thread类来创建多线程2.通过实现Runnable接口来创建多线程3.通过实现Callable接口来实现多线程其实在代码实现过程中,当创建的线程只用一次,可以通过匿名内部类来实现创建多线程。其次我们介绍下Java中的定时器,可用于调用多个定时任务,以后台线程方式执行。1.匿名内部类方式实现多线程程序匿名内部类的方式实现多线原创 2021-02-07 22:21:31 · 840 阅读 · 3 评论 -
JavaSE学习笔记 以面试对话探索进程线程与线程池的概念
探索进程线程和线程池的概念1.进程与线程最近的春招开始了,小白去面试Java后台开发的工作,也认真的准备了这次的面试。面试官这次主要问了Java中多线程的问题,下面让我们看看这次的面试问答详情。1.进程与线程面试官:为什么要有多线程啊, 我看了操作系统中的多进程管理,不是挺好的吗? 多线程似乎没有必要啊!小白:线程,就是程序代码的执行,一个进程至少得有一个线程,要不然,这个进程怎么运行。关于为什么使用多线程,我们可以从生活中的具体实例进行出发,理解就会更加透彻。我们经常用word编译文字,原创 2021-02-09 23:17:06 · 262 阅读 · 1 评论 -
JavaSE学习笔记 走进Java线程池,解决你对Java线程池的种种疑问 (一)
走进Java线程池,解决你对Java线程池的种种疑问1.为什么要使用线程池?通过前面的学习,我们了解到Java线程池的概念。本节,我们将更加详细的对线程池方面的知识做更深入的学习。1.为什么要使用线程池?在Java中,如果每个请求到达就创建一个线程,开销是相当大的。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大的,甚至可能要比在处理实际的用户请求的时间和资源还要多。除了创建...原创 2021-02-15 15:28:26 · 270 阅读 · 0 评论 -
JavaSE学习笔记 走进Java线程池,解决你对Java线程池的种种疑问 (二)
走进Java线程池,解决你对Java线程池的种种疑问 (二)Executors是一个Java中的工具类,提供工厂方法来创建不同类型的线程池。前面我们已经介绍了关于Executors工具类中常用的创建线程池的方法,我们简单进行回顾下:1.newSingleThreadExecutornewSingleThreadExecutor介绍:创建一个单线程的线程池。这个线程池只有一个线程在工作,也就是相当于单线程串行执行所有任务。如果这个唯一的线程因为异常结束,那么会有一个新的线程来代原创 2021-02-16 22:14:40 · 288 阅读 · 1 评论 -
JAVASE学习笔记 简单探索CAS算法原理
简单探索CAS算法原理1.CAS算法理解2.以实例说明CAS算法的作用总结看了标题后,许多朋友会不禁发出疑问,什么是CAS算法?简单来说,CAS为Compare and Swap的意思,即比较并交换的算法。1.CAS算法理解JDK1.5增加了并法包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronize同步锁的一种乐观锁。JDK1.5之前Java语言是靠synchronized关键字来保证同步的,这是一种独占锁(就是有你没我的意思),也是悲观锁。原创 2021-02-04 23:40:18 · 1357 阅读 · 2 评论 -
JAVASE学习笔记 多线程间通信经典练习题
多线程间通信经典练习题1.两个线程间的通信问题上节我们大家一起探索了多线程通信问题,了解了线程之间的等待唤醒机制。下面我们也可以通过一些练习题更加深入的去理解多线程之间的通信。1.两个线程间的通信问题写两个线程,一个线程打印 1—52一个线程打印 A—Z打印结果是: 12A34B56C78D710E------5152Z分析:方式一:利用继承Thread类来实现两个线程间的通信问题public class MyObject { //定义一个标记 public boole原创 2021-01-30 21:35:26 · 579 阅读 · 3 评论