并发多线程

  • Java里的线程有哪些状态?

    初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运...

    2023年12月15日 0 83 0
  • 如何避免“伪共享”?

    字节填充(创建变量时,使用字段对其进行填充,避免多个变量被分派到同一个缓存行里)。 JDK8提供了一个Contended注解来解决伪共享。 精品推荐 GPT-4 Plus账号大大大...

    2023年12月15日 0 84 0
  • “伪共享”出现的原因是什么?

    因为CPU缓存和内存交换数据的单位是缓存行,而同一个缓存行里的多个变量不能同时被多个线程修改。 精品推荐 GPT-4 Plus账号大大大降价了!免费AI写作工具!

    2023年12月15日 0 87 0
  • 什么是线程的阻塞问题?如何解决?

    阻塞是用来形容多线程的问题,几个线程之间共享临界区资源,那么当一个线程占用了临界区资源后,所有需要使用该资源的线程都需要进入该临界区等待,等待会导致线程挂起,一直不能工作,这种情况...

    2023年12月15日 0 86 0
  • 什么是线程的饥饿问题?如何解决?

    饥饿指的是某一线程或多个线程因为某些原因一直获取不到资源,导致程序一直无法执行。如某一线程优先级太低导致一直分配不到资源,或者是某一线程一直占着某种资源不放,导致该线程无法执行等。...

    2023年12月15日 0 109 0
  • 说一说几种常见的线程池及适用场景?

    FixedThreadPool:可重用固定线程数的线程池。(适用于负载比较重的服务器) FixedThreadPool使用无界队列LinkedBlockingQueue作为线程池的...

    2023年12月15日 0 96 0
  • 线程池都有哪几种工作队列?

    ArrayBlockingQueue: 是一个基于数组结构的有界阻塞队列,此队列按FIFO(先进先出)原则对元素进行排序。 LinkedBlockingQueue: 是一个基于链表...

    2023年12月15日 0 78 0
  • 什么是线程安全?

    如果你的代码在多线程下执行和在单线程下执行永远都能获得一样的结果,那么你的代码就是线程安全的。 这个问题有值得一提的地方,就是线程安全也是有几个级别的: 1)不可变 像String...

    2023年12月15日 0 66 0
  • Java中如何获取到线程dump文件

    死循环、死锁、阻塞、页面打开慢等问题,打线程dump是最好的解决问题的途径。所谓线程dump也就是线程堆栈,获取到线程堆栈有两步: 1)获取到线程的pid,可以通过使用jps命令,...

    2023年12月15日 0 76 0
  • Java中用到的线程调度算法是什么?

    抢占式 一个线程用完CPU之后,操作系统会根据线程优先级、线程饥饿情况等数据算出一个总的优先级并分配下一个时间片给某个线程执行。 精品推荐 GPT-4 Plus账号大大大降价了!免...

    2023年12月15日 0 94 0
  • Thread.sleep(0)的作用是什么?

    由于Java采用抢占式的线程调度算法,因此可能会出现某条线程常常获取到CPU控制权的情况,为了让某些优先级比较低的线程也能获取到CPU控制权,可以使用Thread.sleep(0)...

    2023年12月15日 0 92 0
  • 单例模式的线程安全性

    1)饿汉式单例模式的写法:线程安全 2)懒汉式单例模式的写法:非线程安全 3)双检锁单例模式的写法:线程安全 精品推荐 GPT-4 Plus账号大大大降价了!免费AI写作工具!

    2023年12月15日 0 86 0
  • Semaphore有什么作用?

    Semaphore就是一个信号量,它的作用是限制某段代码块的并发数。Semaphore有一个构造函数,可以传入一个int型整数n,表示某段代码最多只有n个线程可以访问,如果超出了n...

    2023年12月15日 0 95 0
  • Hashtable的size()方法中明明只有一条语句"return count",为什么还要做同步?

    1)同一时间只能有一条线程执行固定类的同步方法,但是对于类的非同步方法,可以多条线程同时访问。所以,这样就有问题了,可能线程A在执行Hashtable的put方法添加数据,线程B则...

    2023年12月15日 0 81 0
QR code