千家信息网

idea中All和Thread的区别是什么

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,这篇文章主要介绍"idea中All和Thread的区别是什么",在日常操作中,相信很多人在idea中All和Thread的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2024年11月11日idea中All和Thread的区别是什么

这篇文章主要介绍"idea中All和Thread的区别是什么",在日常操作中,相信很多人在idea中All和Thread的区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"idea中All和Thread的区别是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

All模式

  •  所有的线程都要在当前位置被阻塞,谁先来就先阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待。

  • 如果此时按下一步F6,那所有的线程都通过阻塞代码如果此时按恢复程序运行F8,那么当前线程通过阻塞代码,等待下一个线程的到来,也是谁先来阻塞谁,发生阻塞时其他的线程当前时刻执行到哪里就在哪里进行原地等待。

public class ThreadAndAllBreakApplication {    public static void main(String[] args) {        ThreadTest thread1 = new ThreadTest();        thread1.setName("线程A");        thread1.start();        ThreadTest thread2 = new ThreadTest();        thread2.setName("线程B");        thread2.start();        ThreadTest thread3 = new ThreadTest();        thread3.setName("线程C");        thread3.start();    }}class ThreadTest extends Thread {    @Override    public void run() {        System.out.println(Thread.currentThread().getName() + ": 1");        try {            long millis = RandomUtil.randomLong(100, 500);            System.out.println(Thread.currentThread().getName() + "睡眠: " + millis);            Thread.sleep(millis);        } catch (InterruptedException e) {            e.printStackTrace();        }        System.out.println(Thread.currentThread().getName() + ": 2");        System.out.println(Thread.currentThread().getName() + ": 3");        System.out.println(Thread.currentThread().getName() + ": 设置断点的前一行代码"); // 当前行设置断点        System.out.println(Thread.currentThread().getName() + ": 4");        System.out.println(Thread.currentThread().getName() + ": end");

线程A: 1
线程C: 1
线程B: 1
线程C睡眠: 283
线程A睡眠: 340
线程B睡眠: 127
线程B: 2
线程B: 3
线程B: 设置断点的前一行代码 // B来到了这里,此时其他线程A、B在原地等待,即A、B都在睡眠。
线程A: 2 // A之前执行到睡眠,现在执行2
线程A: 3
线程A: 设置断点的前一行代码 // A来到了这里,此时其他线程B、C在原地等待
线程C: 2 // c之前执行到睡眠,现在执行2
线程C: 3
线程A: 4
线程B: 4
线程A: end
线程C: 设置断点的前一行代码 // C来到了这里,如果不放行断点,B一直也不会输出end,会在原地等待(这里证明了当某个线程被All断点阻塞后,其他线程会在原地等待)
线程B: end
线程C: 4
线程C: end

Thread模式

所有的线程都会运行到断点处然后阻塞

  • 如果此时按下一步F6,那当前的线程都通过阻塞代码,其他线程不动。

  • 如果此时按恢复程序运行F8,那么当前线程通过阻塞代码,并自动切换到下一个阻塞线程进行调试。

到此,关于"idea中All和Thread的区别是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0