当尝试(未经检查)异常时,我试图理解parallelStream的行为。我在改变时对以下代码感到困惑
在/// Server
var users = {
'asdf123': { id: 'asdf123', name: 'jack', userConnections: [] }, // user could have multiple pages open, track all sockets
'123asdf': { id: '123asdf', name: 'jill', userConnections: [] },
};
function onLogin(req, res) {
// do some database login
var user = users[asdf123];
var token = jsonwebtoken.sign({ userId: user.userId }, 'secret signing key');
res.json({ token: token });
}
io.on('connection', function (socket) {
socket.authenticated = false; // have they sent us a valid token yet
socket.on('auth', function (token) { // client will explicitly send the token
jsonwebtoken.verifyToken(token, function (err, decodedToken) {
if (err) { // bad or expired token, disconnect them.
socket.disconnect();
return;
}
if (users[decodedToken.userId]) {
users[decodedToken.userId].userConnections.push(socket);
socket.authenticated = true;
}
});
});
});
/// Client
var socket = io();
var savedToken = localStorage.getItem('token');
socket.on('connect', function () {
socket.emit('auth', savedToken);
});
和stream()
之间添加(有时)导致我的异常。
这是代码:如果你多次运行它,通常你会得到它
parallelStream()
,但有时你会得到
由RuntimeException
引起的RuntimeException
。
如果我改变任何其他类型的异常,我仍然会得到相同的效果:
RuntimeException
,但有时你会得到
由Bla
引起的Bla
。
Bla
与此松散相关 Catching exceptions out of 'stream()' or 'parallelStream()' loses correct values 但是在这个问题中没有答案可以解决这一问题。 我也看了 https://docs.oracle.com/javase/tutorial/collections/streams/parallelism.html 但这根本没有提到这个问题。