202110-25 带你快速搞定java多线程 目录1、什么是线程2、线程的状态3、怎么通俗理解进程,线程?4、线程和进程的区别5、什么是线程安全6、如何创建线程总结:1、什么是线程线程是操作系统调度的最小单元,也叫轻量级进程。它被包含在进程之中,是进程中的实际运作单位。同一进程可以创建多个线程,每个进程都有自己独立的一块内存空间。并且能够访问共享的内存变量。2、线程的状态线程的状态一般看到的也就是Runable和blocked,最多的还是blocked,因为cpu的时间片... 继续阅读 >
202110-17 java——多线程基础 目录多线程使用场景:线程和进程区别:创建线程的方式:Thread类的有关方法:线程的同步:模拟火车站售票程序线程的同步:synchronized1.同步代码块:2.synchronized还可以放在方法声明中,表示整个方法为同步方法。总结并发与并行:并行:指两个或多个事件在同一时刻发生(同时发生)。并发:指两个或多个事件在同一个时间段内发生。多线程使用场景:1.后台任务,比如游戏服务器2.定时向大量用户(100W)用户发邮件3.异步处理:... 继续阅读 >
202110-12 新手了解java 多线程基础知识 目录一、线程的生命周期JDK中用Thread.State类定义了线程的几种状态:二、线程同步1、为什么要有线程同步2、synchronized2.1同步代码块2.2同步方法3、Lock锁四.基本概念五.多线程的创建六.Thread类方法介绍总结一、线程的生命周期JDK中用Thread.State类定义了线程的几种状态:要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状... 继续阅读 >
202110-12 彻底搞懂Java多线程(四) 目录SimpleDateFormat非线程安全问题ThreadLocalThreadLocal的原理ThreadLocal常用方法ThreadLocal的初始化InheritableThreadLocal的使用总结SimpleDateFormat非线程安全问题实现1000个线程的时间格式化packageSimpleDateFormat;importjava.text.SimpleDateFormat;importjava.util.Date;importjava.util.concurrent.LinkedBlockingDeque;importjava.util.concurrent.ThreadPoolExecutor;importjava.util.concurrent.TimeUnit... 继续阅读 >
202110-12 彻底搞懂Java多线程(三) 目录Java线程池线程池的优点线程池的6种创建方式创建单个线程池的作用是什么?线程池的第七种创建方式ThreadPoolExecutor的执行方式ThreadPoolExecutor的执行流程线程池的终止线程池的状态异步、同步1.Java线程同步与异步线程工厂总结Java线程池线程的缺点:1.线程的创建它会开辟本地方法栈、JVM栈、程序计数器私有的内存,同时消耗的时候需要销毁以上三个区域,因此频繁的创建和销毁线程比较消耗系统的资源。2.在任务量远远大于... 继续阅读 >
202110-12 彻底搞懂Java多线程(二) 目录Java中的锁1.synchronized锁(jvm层的解决方案,也叫监视器锁)2.手动锁Locksynchronized锁synchronized使用场景1.使用synchronized来修饰代码块(可以给任意的对象进行加锁操作)2.使用synchronized来修饰静态方法(对当前的类进行加锁的操作)3.使用synchronized来修饰普通的方法(对当前类的实例来进行加锁)synchronized注意事项1.加锁的时候一定要使用同一把锁对象Lock锁使用的注意事项公平锁、非公平锁synchronzied和Lo... 继续阅读 >
202110-12 彻底搞懂Java多线程(一) 目录Java多线程线程的创建线程常用方法线程的终止1.自定义实现线程的终止2.使用Thread的interrupted来中断3.Thraed.interrupted()方法和Threaed.currentThread().interrupt()的区别线程的状态线程的优先级守护线程线程组线程安全问题volatile关键字总结Java多线程线程的创建1.继承Thread2.实现Runnable3.实现Callable使用继承Thread类来开发多线程的应用程序在设计上是有局限性的,因为Java是单继承。继承Thread类publicclassThr... 继续阅读 >
202109-16 创建java多线程程序 目录创建多线程程序的第一种方式:创建Thread类的子类实现步骤:创建多线程程序的第二种方式:实现RunnabLe接口java.Lang.Thread类的构造方法实现步骤:实现Runnable接口创建多线程程序的好处:匿名内部类方式实现线程的创建Thread类中的常用方法:获取线程的名称:设置线程的名称:(了解)总结:创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类实现步骤:... 继续阅读 >
202109-16 Java经典面试题汇总--多线程 目录1.并行和并发有什么区别?2.线程和进程的区别?3.守护线程是什么?4.实现多线程的方式有哪些?5.说一下runnable和callable有什么区别?6.sleep()和wait()有什么区别?7.线程有哪些状态?8.notify()和notifyAll()有什么区别?9.线程的run()和start()有什么区别?10.创建线程池有哪几种方式?11.线程池中submit()和execute()方法有什么区别?12.Java程序中怎么保证多线程的运行安全?13.多线程中... 继续阅读 >
202109-09 详解在Java中如何创建多线程程序 创建多线程程序的第一种方式:创建Thread类的子类java.lang.Thread类:是描述线程的类,我们想要实现多线程程序,就必须继承Thread类实现步骤:1.创建一个Thread类的子类2.在Thread类的子类中重写Thread类中的run方法,设置线程任务(开启线程要做什么?)3.创建Thread类的子类对象4.调用Thread类中的方法start方法,开启新的线程,执行run方法voidstart()使该线程开始执行;Java虚拟机调用该线程的run方法。结果是两个线程并发地运行?当... 继续阅读 >
202108-12 java多线程从入门到精通看这篇就够了 目录一.认识线程及线程的创建1.线程的概念2.线程的特性3.线程的创建方式<1>继承Thread类<2>实现Runnable接口<3>实现Callable接口二.线程的常用方法1.构造方法和属性的获取方法2.常用方法<1>run()和start()<2>interrupt()方法<3>join方法<4>获取当前线程的引用currentThread();方法<5>休眠当前线程sleep();方法<6>线程让步yield();方法三.线程的生命周期和状态转换四.线程间的通信五.多线程的安全及解决1.原子性2.可见性3.代码的顺... 继续阅读 >
202108-08 Java多线程之FutureTask的介绍及使用 目录一、FutureTask的理解二、FutureTask类图三、FutureTask类中常用方法四、FutureTask类的使用示例一、FutureTask的理解FutureTask属于java.util.concurrent包;FutureTask表示可取消的异步计算。FutureTask类提供了一个Future的基本实现,具有启动和取消计算的方法,查询计算是否完整,并检索计算结果。结果只能在计算完成后才能检索;如果计算尚未完成,则get方法将阻止。一旦计算完成,则无法重新启动或取消计算(除非使用... 继续阅读 >
202108-06 Java多线程之线程状态的迁移详解 目录一、六种状态二、状态迁移图三、线程状态模拟总结一、六种状态java.lang.Thread的状态分为以下6种,它们以枚举的形式,封装在了Thread类内部:NEW:表示线程刚刚创建出来,还未启动RUNNABLE:可运行状态,该状态的线程可以是ready或running,唯一的决定因素是线程调度器BLOCKED:阻塞,线程正在等待一个monitor锁以便进入一个同步代码块WAITING:等待,一种挂起等待的状态。一个线程处于waiting是为了等待其他线程执行某个... 继续阅读 >
202107-09 Java实战之多线程模拟站点售票 目录一、实验题目二、分析三、完整代码:一、实验题目二、分析哦吼,这次的实验题目是一道非常经典的多线程买票问题。题目要求我们创建5个线程来模拟卖票,当然这其中就包含多线程存在也就是我们要解决的问题,重复卖票和超额卖票。即多个窗口卖出同一张票以及窗口卖出非正数编号的票。不过这个问题可以先放一下,我们先来创建基础的线程模型,并在主方法中创建五个线程让他们跑起来;话不多说,上代码。publicclassTicket{pub... 继续阅读 >
202107-08 Java多线程之Interrupt中断线程详解 目录一、测试代码二、测试三、执行过程描述四、输出日志五、结论六、主要方法释义七、DEMO八、拓展程序九、实战一、测试代码https://gitee.com/zture/spring-test/blob/master/multithreading/src/test/java/cn/diswares/blog/InterruptTests.java二、测试为了方便理解简介中interrupt的概念,写个DEMO测试一下/***调用interrupt并不会影响线程正常运行*/@TestpublicvoidtestInvokeInterrupt()throwsInterruptedExce... 继续阅读 >