惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
SegmentFault 最新的问题
博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
博客园 - 【当耐特】
月光博客
月光博客
Vercel News
Vercel News
D
Docker
I
InfoQ
Apple Machine Learning Research
Apple Machine Learning Research
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
GbyAI
GbyAI
有赞技术团队
有赞技术团队
雷峰网
雷峰网
博客园 - 聂微东
小众软件
小众软件
Y
Y Combinator Blog
腾讯CDC
L
LangChain Blog
The GitHub Blog
The GitHub Blog
宝玉的分享
宝玉的分享
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
T
The Blog of Author Tim Ferriss

博客园 - mumuliang

php.ini 开发和线上配置的差异 [laravel]malformed header from script 'index.php': Bad header: HTTP/1.1 302 Found, referer: http://localhost/auth/login 4e00~9fa5 [todo] 3rd [笔记] 为了不让移动端页面分权重你应当如何做? 一样的alert代码,样式不同 Eclipse中Sever启动成功,但tomcat无法管理页面无法访问。 [转载]Eclipse调试Java的10个技巧 写了一阵儿西夏普以后回头写西加加你会想不起来的那些事儿 为毛无法创建文本文件COM1.txt PADS在注册表中的菜单栏数据 C# Marshal.GetActiveObject() 遭遇 HRESULT:0x800401E3 (MK_E_UNAVAILABLE)) AutoVue打开ProE工程图中文乱码 Visual studio智能感知挡住了当前代码输入行 创建COM对象时遭遇 800702e4 以Administrator权限运行VS时无法拖入文件 如何判断exe或dll的目标平台及是否是.NET? 批处理设置当前路径为工作路径 调用约定__cdecl和__stdcall
Process的Waitfor() 引起代码死锁
mumuliang · 2016-01-27 · via 博客园 - mumuliang

Java用process调用c#的exe后,process.waitfor(). exe执行会停在某处。据说是waitfor引起的exe子线程死锁。

先存一个链接 http://yearsaaaa123789.iteye.com/blog/1404865

关键引用

因为本地的系统对标准输入和输出所提供的缓冲池有效,所以错误的对标准输出快速的写入何从标准输入快速的读入都有可能造成子进程的所,甚至死锁。好了,问题的关键在缓冲区这个地方:可执行程序的标准输出比较多,而运行窗口的标准缓冲区不够大,所以发生阻塞。接着来分析缓冲区,哪来的这个东西,当Runtime对象调用exec(cmd)后,JVM会启动一个子进程,该进程会与JVM进程建立三个管道连接:标准输入,标准输出和标准错误流。假设该程序不断在向标准输出流和标准错误流写数据,而JVM不读取的话,当缓冲区满之后将无法继续写入数据,最终造成阻塞在waitfor()这里。