![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java_ee
文章平均质量分 79
JAVA进阶,更深入的学习JAVA
LAKURRAA
全栈美女
展开
-
JAVA多线程案例——实现三个窗口卖票功能
我们采用线程对象来模拟售票窗口,实现多个窗口同时卖票,。原创 2023-08-13 17:10:17 · 1551 阅读 · 0 评论 -
线程池及有关面试题
当我们的业务太多时,随着业务的增多我们需要不断创建新的线程(创建的过程是JVM通过调用系统API来申请系统资源创建线程的过程),JVM调用系统API意味着从用户态到内核态去执行,因为系统只有一个内核态,它要完成的工作有很多,加上创建线程和销毁线程需要的时间成本和开销非常大,这时我们就引入了线程池。在工厂模式的基础上还引申出了简单工厂(多态 根据不同的传入参数获取不同的子类对象,就是简单工厂的一种实现)和抽象工厂,这里不做介绍。5.JDK中提供了几种创建线程池的方法或者说JDK中有几种默认的线程池。原创 2023-04-16 18:28:08 · 35 阅读 · 0 评论 -
多线程案例——单例模式
为了优化加锁方法,我们需要实现的是:当没有实例化对象时获取锁创建实例化对象;1.当三个线程同时执行getInstance方法时,当经过第一层if时都收到了实例没有被创建的消息,于是开始竞争锁。3.当线程一释放了锁,线程二和线程三无论哪一方竞争到了锁到达第一个if时,发现实例已经被创建就不会再去获取锁了。2.假如线程一获取到锁到达第二层if时,发现实例也没有被创建于是创建了实例,最后释放了锁。加锁避免了创建多个实例化对象的问题,但是还会有另一个问题:每次去创建对象时都要去获取锁,原创 2023-04-04 20:48:43 · 96 阅读 · 0 评论 -
volatile关键字及wait、notify方法
给共享变量加上volatile关键字之后,相当于给对应的变量的读写操作前后加上了相关的内存屏障,作用就是保证了内存可见性,同时告诉CPU执行顺序不需要优化,从而也保证了有序性。2.当另一个线程调用了notify()方法之后,之前调用wait()方法的线程被唤醒后需要重新竞争所资源,然后再从之前wait()位置向下执行自己的逻辑。1.当一个线程调用了wait()方法之后,就会释放掉当前持有的锁,等待被其他线程唤醒。在多线程环境下,一个线程修改了共享变量的值,但另一个线程没有读到最新值,这就是内存可见性问题。原创 2023-02-14 10:10:54 · 55 阅读 · 0 评论 -
synchronized关键字
当线程A拿到了锁,线程B想要执行锁里面的代码块,就要等线程A执行完释放锁之后。如果线程A还没有释放锁,线程B只能阻塞等待,这时线程B的状态就是BLOCK。这样就可以避免线程不安全的问题。这里我们就要用到synchronized关键字。synchronized关键字可以修饰普通方法,也可以修饰代码块。(加在方法之前,说明这是一个需要加锁的方法)进入修饰的代码块相当于退出修饰的代码块相当于上一个线程解锁之后下一个线程并不是立即就能获取到锁而是要靠操作系统来唤醒".这。原创 2023-02-10 15:22:06 · 58 阅读 · 0 评论 -
线程安全(重点)
造成线程不安全的主要原因:1.线程的抢占式执行2.多个线程改变了同一变量3.原子性4.内存可见性5.有序性。原创 2023-02-10 14:11:31 · 42 阅读 · 0 评论 -
多线程及线程方法状态
我们给线程中断时,其实是给休眠中断,但休眠其实还没有到指定的时间,这是系统就会抛出异常,如果我们没有在catch中处理中断操作,那么我们的线程就会被异常唤醒。另外,JAVA认为PCB的这几种状态不够多,基于JAVA多线程实现过程中的一些机制,在PCB状态的基础上做了一些拓展。2.当线程在TIMED-WAITING状态时,这时线程会抛出异常,我们的处理方法时在catch中处理异常。join方法等待线程的结束。1.创建线程本身也是有一定消耗的,虽然不像创建进程对系统资源的消耗那么大,但是还是有的。原创 2023-01-18 17:27:46 · 57 阅读 · 0 评论 -
创建线程的方法
2.JAVA中的线程,是对PCB的一个抽象(JAVA中创建一个线程对象-->JVM调用系统的API-->创建一个真正的操作系统中的线程)JDK中提供了一个叫Thread的类,这个类描述的就是JAVA中线程,通过Thread类创建线程,那么就可以创建一个JAVA线程。2.创建Thread类实例,调用Thread的构造方法时将Runnable对象作为target参数。1.继承Thread来创建一个线程。2.创建MyThread类的实例。1.操作系统中的线程PCB。就表示当前线程对象的引用。原创 2023-01-14 20:48:12 · 55 阅读 · 0 评论 -
操作系统——进程调度
进程是操作系统对一个正在运行的程序的一种抽象,换言之,可以把进程看做程序的一次运行过程。进程是操作系统分配内存资源的最小单位(基本单位)。进程是动态的可执行程序。运行的程序在系统中都是以进程的形式存在。系统本身也是一个程序,需要多个进程。原创 2023-01-06 10:19:53 · 1585 阅读 · 0 评论 -
线程及线程与进程的区别
进程在操作系统里是其实是一个PCB组,组里的内存指针、文件描述符表用的都是相同的,区别在于状态、优先级、上下文、记账信息这些是不一样的。每创建一个进程,这个进程里至少都包含一个线程,那么这个线程就是主线程。一个线程就是一个执行流,每个线程按照顺序执行着自己的代码(执行的任务),多个线程之间“同时”执行着多份代码。多进程也可以充分利用CPU去执行一些业务,但每个进程启动之前都要向CPU申请系统的资源(内存、文件)。线程共享进程申请来的资源。有了进程之后,就可以创建多个线程来处理业务,充分利用CPU资源。原创 2023-01-06 20:11:31 · 70 阅读 · 0 评论