idea 断点线程_IDEA多线程下多个线程切换断点运行调试的技巧

本文介绍了在IntelliJ IDEA中进行多线程调试的方法,包括设置断点,创建测试代码,以及如何在调试过程中切换线程进行单步调试。在多线程应用中,通过IDEA的Threads Tab和Frames Tab可以有效控制和观察不同线程的执行状态,确保高效地定位和解决问题。
摘要由CSDN通过智能技术生成

多线程调试设置可以参考:http://www.cnblogs.com/leodaxin/p/7710630.html

1 断点设置如图:

b849fd1895a0e979bfbc1f790cdbd6d0.png

2 测试代码,然后进行debug

package com.daxin;

import java.util.HashMap;

/**

* Created by Daxin on 2017/10/22.

*/

public class HashMapInfiniteLoop {

private static HashMap map = new HashMap(2, 0.75f);

public static void main(String[] args) throws InterruptedException {

map.put(5, 55);

new Thread("Thread1-Name") {

public void run() {

System.out.println("Thread1-Name Start");

try {

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

map.put(7, 77);//断点位置 1

System.out.println(map);

}

}.start();

new Thread("Thread2-Name") {

public void run() {

try {

System.out.println("Thread2-Name Start");

Thread.sleep(5000);

} catch (InterruptedException e) {

e.printStackTrace();

}

map.put(3, 33);// 断点位置2

System.out.println(map);

}

}.start();

// 断点位置 3

System.out.println("Thread-Main-Name Start");

System.out.println("Thread-Main-Name Start");

System.out.println("Thread-Main-Name Start");

Thread.sleep(500000);

}

}

3:启动debug,我们可以在Threads Tab选项双击需要进行单步调试的线程

295e74fc8bbc49c60b6c12f7d328f676.png

然后选择Frames Tab选项中调试的线程进行快捷键调试即可。

d9b88145eb15e9c86e4d0eafbb0d15c0.png

C#多线程下如何保证线程安全?

多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题.所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是 ...

多线程下C#如何保证线程安全?

多线程编程相对于单线程会出现一个特有的问题,就是线程安全的问题.所谓的线程安全,就是如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是 ...

第10章 线程控制(5)_多线程下的fork

6. 线程和fork 6.1 多线程下的fork (1)历史包袱 ①fork与多线程的协作性很差,这是POSIX系统操作系统的历史包袱. ②长期以来程序都是单线程的,fork运行正常,但引入线程这后, ...

java线程基础巩固---多线程下的生产者消费者模型,以及详细介绍notifyAll方法

在上一次[http://www.cnblogs.com/webor2006/p/8419565.html]中演示了多Product多Consumer假死的情况,这次解决假死的情况来实现一个真正的多线程 ...

多线程下,两个线程交替打印0 -100,使用wait()和notify()

多线程下,两个线程交替打印0 -100,使用wait()和notify() public class ThreadTest{ private static final Object lock = ne ...

Vector 是线程安全的,是不是在多线程下操作Vector就可以不用加Synchronized

如标题一样,如果之前让我回答,我会说,是的,在多线程的环境下操作Vector,不需要加Synchronized. 但是我今天无意间看到一篇文章,我才发现我之前的想法是错误的,这篇文章的地址: http ...

C# - 多线程 之 进程与线程

并行~并发 并发 Concurrency,逻辑上的同时发生,一个处理器(在不同时刻或者说在同一时间间隔内)"同时"处理多个任务.宏观上是并发的,微观上是按排队等待.唤醒.执行的步骤 ...

随机推荐

CRM基于.NET的增删改查

一.准备工作: 1.添加 microsoft.crm.sdk.proxy.dll和microsoft.xrm.sdk.dll 引用到项目中!并引用以下using! using Microsoft.Xr ...

Python从内存中使用编译后的模块

在Windows编程的时候,有些时候,我们经常会要使用一些非常规的方法,比如说从内存中加载DLL,然后使用DLL中的函数.于是就思索在用Python的时候是否能够将几个编译好的Pyc合并成一个,然后使 ...

csv转json文件

今天因为需要帮一个同事的新闻内容录入为html, 每次手改不方便,所以就弄了个csv(excel)转json的c++程序,然后再利用ejs把它渲染成网页,打开渲染好的网页再保存(不能保存源文件,不然还 ...

bzoj2342

shoi题目好坑爹 首先自己测发现这道题如果用后缀数组+rmq处理每个点回文串能延伸长度的话会TLE (当然我用的是倍增+ST的方法,如果用三分构建后缀数组+笛卡尔树处理rmq我就不知道了): 关于最 ...

(转)SQL流程控制语句学习(二):begin…end if…else case

1.begin…end 语法: begin {sql语句或语句块} end 注意:begin 和end要成对使用 2.if…else 语法: if  布尔表达式 {sql语句或语句块} else  布 ...

C#基础笔记---浅谈XML读取以及简单的ORM实现

背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...

一键部署ETCD集群脚本

这里使用三个节点,系统版本为CentOS7 # vim deploy-etcd.sh #!/bin/bash set -x set -e #更改这里的IP, 只支持部署3个节点etcd集群 decla ...

MkDocs项目文档生成器

简介 安装 我的配置 Chocolatey 简介 - Windows的包管理器 官方网址 安装 注意事项 Python 简介 安装 Pip 简介-Python的包管理器 升级 MkDocs的安装 使用 ...

redis发布/订阅

发布订阅简介 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息,消息之间通过channel传递. 准备工作 两台安装了redis的机器(虚拟 ...

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值