(Why) Is Java not available in a thread-based environment?
6 次查看(过去 30 天)
显示 更早的评论
From my experience, using Java features (e.g. java.util.LinkedList) is smooth within MATLAB. However, these features are unavailable when called from a thread-based environment. A simplified example would be:
msgbase=javachk('jvm');
ph=parpool('Threads',2);
f=parfeval(ph,@jthreads,1);
[~,msgth]=f.fetchNext();
delete(ph);
function MSG=jthreads()
MSG=javachk('jvm');
end
Where msgbase would be empty, indicating Java is usable, but msgth would be 'This feature is not supported because:Java is not currently available.' I was not able to find a official statement on this issue, or a previous insightful discussion.
- Is this expected behavior?
- Can I modified settings or append some parameters to enable Java features inside a thread-based environment?
- I'm not familar with C MEX funtions but I could learn. However, is C MEX functions supported inside a thread-based environment?
Thanks and regards!
0 个评论
回答(1 个)
Damian Pietrus
2024-3-19
Currently, thread pools do not support all functions and features that process pools do. Stealing from our doc page here:
In general, functionality in Graphics, App Building, External Language Interfaces, Files and Folders, and Environment and Settings is not supported.
1 个评论
Jan Kappen
2024-5-22
Interestingly, Python seems to be supported to some extend, see pass Python object as argument to function in "parfeval" - MATLAB Answers - MATLAB Central (mathworks.com)
Does this work with C/C++ and Java interfaces, too? Where exactly are the limitations?
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Startup and Shutdown 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!