虽然在akka中使用TCP或UDP连接到java.net.InetSocketAddress相对容易,但API中的SocketAddress和Unix-socket似乎没有等价物.
对于我目前的项目,我需要使用Unix-Socket 连接到Docker Remote-API.有没有办法使用akka这样做或我需要使用不同的方法?
我尝试val在特征中使用抽象来初始化另一个值.我有一个NullPointerException.我把这个行为简化为一个最小的测试用例:
trait MessagePrinter {
val message: String
println(message)
}
class HelloPrinter extends MessagePrinter {
val message = "Hello World"
}
val obj = new HelloPrinter()
println(obj.message)
Run Code Online (Sandbox Code Playgroud)
这个小程序产生以下结果:
null
Hello World
Run Code Online (Sandbox Code Playgroud)
我的印象是val可能永远不会改变.这是预期的行为还是编译器错误?如何解决此问题并Hello World在初始化期间进行打印?
+=c ++中的运算符是否是线程安全的?
可以想象它不是的情况(伪代码):
int a = 5;
void thread1 () {
a += 5;
}
void thread2 () {
a += 5;
}
void main () {
start_thread1 ();
start_thread2 ();
//Prints 15 always, but i think 10 is not impossible.
printf ("%d\n", a);
}
Run Code Online (Sandbox Code Playgroud)
很明显,当+ =重载时我必须使用互斥锁,但是在使用简单类型时我是否必须设置互斥锁?