java高级开发
海木石
走一步,再走一步;累了就休息一下,但不能停。
展开
-
线程池概念、线程池作用、线程池的四种创建方式
线程池1.1、什么是线程池?线程池是指在初始化一个多线程应用程序过程中创建一个线程集合,然后在需要执行新的任务时重用这些线程而不是新建一个线程。线程池中线程的数量通常完全取决于可用内存数量和应用程序的需求。然而,增加可用线程数量是可能的。线程池中的每个线程都有被分配一个任务,一旦任务已经完成了,线程回到池子中并等待下一次分配任务。1.2、线程池作用基于以下几个原因在多线程应用程序...原创 2020-04-17 21:57:09 · 343 阅读 · 0 评论 -
什么是ThreadLocal?
API截图:ThreadLocal提高一个线程的局部变量,访问某个线程拥有自己局部变量。 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。ThreadLocal的接口方法ThreadLocal类接口很简单,只有4个方法,我们先来了解一下:...原创 2020-04-17 16:24:18 · 234 阅读 · 0 评论 -
Volatile
一、volatilevolatile 是一个类型修饰符。volatile 的作用是作为指令关键字,确保本条指令不会因编译器的优化而省略。二、volatile 的特性①保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(实现可见性)class ThreadVolatileDemo extends Thread { /...原创 2020-04-17 12:15:51 · 145 阅读 · 0 评论 -
java内存模型(JMM)--别和jvm内存结构搞混了
注意:java内存模型和jvm内存结构(堆、栈、方法区。。。)别搞混了jvm内存结构是这个啊: JMM(Java Memory Model): 共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储...原创 2020-04-17 10:40:37 · 210 阅读 · 0 评论 -
线程3大特性(原子性、可见性、有序性)
①什么是原子性即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。这2个操作必须要具备原子性才能保证不出现一些意外的问题。我们操作数据也是如此,比如i = i+1;其中就包括,读取i的值,计算i,写入i。这行...原创 2020-04-17 10:09:49 · 627 阅读 · 0 评论 -
join(long millis)意思?join()作用
①join()作用:class JoinThread implements Runnable { public void run() { for (int i = 0; i < 100; i++) { System.out.println(Thread.currentThread().getName() + "---i:" + i); } }}public ...原创 2020-04-16 22:45:36 · 584 阅读 · 0 评论 -
如何停止线程?stop方法过时弊端
1. 使用退出标志,使线程正常退出,也就是当run方法完成后线程终止。 2. 使用stop方法强行终止线程(这个方法不推荐使用,因为stop和suspend、resume一样,也可能发生不可预料的结果)。Thread类的下面三个方法,都过上了,都有弊端: 3. 使用interrupt方法中断线程,线程转为阻塞状态,基本就用这个方法了。...原创 2020-04-16 22:28:09 · 889 阅读 · 0 评论 -
如何实现线程安全(线程安全的解决方法,如何实现线程同步)
问:如何解决多线程之间线程安全问题?答:使用多线程之间同步或使用锁(lock)。问:为什么使用线程同步或使用锁能解决线程安全问题呢?答:将可能会发生数据冲突问题(线程不安全问题),只能让当前一个线程进行执行。代码执行完成后释放锁,让后才能让其他线程进行执行。这样的话就可以解决线程不安全问题。问:什么是多线程之间同步?答:当多个线程共享同一个资源,不会受到其他线程的干扰。...原创 2020-04-15 20:40:23 · 354 阅读 · 0 评论 -
Java多线程基础知识点
一、线程与进程区别 每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实...原创 2020-04-15 11:52:26 · 168 阅读 · 0 评论 -
多线程死锁
什么是多线程死锁?答:同步中嵌套同步,导致锁无法释放class ThreadTrain6 implements Runnable { // 这是货票总票数,多个线程会同时共享资源 private int trainCount = 100; public boolean flag = true; private Object mutex = new Object(); @...原创 2020-04-15 20:59:14 · 128 阅读 · 0 评论 -
wait与sleep区别?
对于sleep()方法,我们首先要知道该方法是属于Thread类中的。而wait()方法,则是属于Object类中的。sleep()方法导致了程序暂停执行指定的时间,让出cpu给其他线程,但是他的监控状态依然保持者,当指定的时间到了又会自动恢复运行状态。在调用sleep()方法的过程中,线程不会释放对象锁。而当调用wait()方法的时候,线程会放弃对象锁,进入等待此对象的等待锁定池,只...原创 2020-04-16 18:00:34 · 191 阅读 · 0 评论 -
多线程之间通信
什么是多线程之间通讯? 多线程之间通讯,其实就是多个线程在操作同一个资源,但是操作的动作不同。 画图演示 方法一:synchronized和wait配套使用Object类的方法部分截图:其中我们要用到的是wait()、notify()、notifyAll()是三个方法,可以用来控制线...原创 2020-04-16 21:20:35 · 393 阅读 · 0 评论 -
什么是线程安全问题?
当多个线程同时共享,同一个全局变量或者静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。做读操作时不会发生数据冲突问题的。 ...原创 2020-04-15 10:19:47 · 1234 阅读 · 0 评论 -
Lock 接口与 synchronized 关键字的区别
1.JDK版本不同synchronized关键字产生于JKD1.5之前,是低版本保证共享资源同步访问的主要技术。Lock接口产生于JDK1.5版本,位于著名的java.util.concurrent并发包中,是Java提供的一种比synchronized关键字更加灵活与丰富的共享资源同步访问技术。2.读写锁synchronized关键字只提供了一种锁,即独占锁。Lock接口不仅提供...转载 2020-04-16 21:34:03 · 196 阅读 · 0 评论 -
守护线程理解、创建、应用
注意的是守护线程中产生的线程都是守护线程其实守护线程和用户线程区别不大,可以理解为特殊的用户线程。特殊就特殊在如果程序中所有的用户线程都退出了,那么所有的守护线程就都会被杀死,很好理解,没有被守护的对象了,也不需要守护线程了。启动守护线程也有两种方法,先来看看怎么启动守护线程 。最常用的一种是通过将用户线程转换为守护线程来启动线程从而启动守护线程。thread.setDaemon...原创 2020-04-16 17:53:06 · 335 阅读 · 0 评论