Java doc说,方法值()和entrySet()的返回值由映射支持.因此,对地图的更改将反映在集合中,反之亦然.我不希望这发生在我的静态副本上.从本质上讲,我希望在我的DS上完成大量并发操作.但在某些情况下,我想迭代其静态快照.我想迭代静态快照,因为我假设与正在同时更新的版本相比,迭代静态快照会更快.
我正在尝试使用select函数在服务器和1个客户端(不再)之间进行非阻塞i/o,其中通信流畅(可以随时发送而另一个将在不等待发送的情况下接收).我找到了一些包含一些代码的教程,并尝试将其改编为我的.这就是我所拥有的 -
服务器
#define PORT "4950"
#define STDIN 0
struct sockaddr name;
void set_nonblock(int socket) {
int flags;
flags = fcntl(socket,F_GETFL,0);
assert(flags != -1);
fcntl(socket, F_SETFL, flags | O_NONBLOCK);
}
// get sockaddr, IPv4 or IPv6:
void *get_in_addr(struct sockaddr *sa) {
if (sa->sa_family == AF_INET)
return &(((struct sockaddr_in*)sa)->sin_addr);
return &(((struct sockaddr_in6*)sa)->sin6_addr);
}
int main(int agrc, char** argv) {
int status, sock, adrlen, new_sd;
struct addrinfo hints;
struct addrinfo *servinfo; //will point to the results
//store the connecting address and size …Run Code Online (Sandbox Code Playgroud) 比如说 20 核机器上大约有 150 个线程。我希望特定线程永远不会进行上下文切换。我不确定将线程优先级设置为 MAX_PRIORITY 是否会执行此操作?另外,如果我们将优先级设置为 max,操作系统是否有必要遵循指令(假设我在 sudo 模式下运行)?
我知道这是一个有点天真的问题,但我想了解java中多线程背后的基本工作原理.考虑以下代码,并说A在主线程中执行,它开始执行另一个工作线程,在B类中定义.我想知道可以从A调用B.func1并运行B的方法,并行执行或不执行?
public class A {
public static void main(String[] args) {
B obj = new B();
obj.start();
obj.func1();
}
}
public class B extends Thread {
public B() {
//constructor
}
public void run() {
while(true) {
//do somethings
}
}
public void func1() {
//do someotherthings
}
}
Run Code Online (Sandbox Code Playgroud)