小编San*_*mar的帖子

当我在java中创建多个线程时,为什么没有为线程创建调用系统调用?

以下代码创建100个新的Java线程并运行它们.

class ThreadTest {
    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            final int tNo = i;
            new Thread(new Runnable() {
                @Override
                public void run() {
                    System.out.println("thread #" + tNo);
                }
            }).start();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行上面的代码并使用strace记录由此执行的系统调用时,我找不到任何正在创建新线程的系统调用(可能是clone()).

但是当我使用ps -eLf命令检查上述进程的线程时,它会列出(> 100)具有不同线程ID的线程.

如何在没有任何系统调用的情况下创建这些线程?如果jvm在用户空间中创建线程,则ps -eLf不应列出这些线程.

strace命令的输出

mprotect(0xf95000, 8876032, PROT_READ|PROT_EXEC) = 0
munmap(0xf7762000, 92395)               = 0
mmap2(NULL, 331776, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0xfffffffff770f000
mprotect(0xf770f000, 4096, PROT_NONE)   = 0
clone(child_stack=0xf775f494, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, parent_tidptr=0xf775fbd8, tls=0xf775fbd8, child_tidptr=0xffdb53d0) = 31692
futex(0xf775fbd8, …
Run Code Online (Sandbox Code Playgroud)

java multithreading

6
推荐指数
1
解决办法
443
查看次数

如何在java中实现多态?

在Java中,所有公共非静态方法都是虚拟的.这意味着要调用哪个方法是在运行时决定的(动态绑定).在C++中,虚函数(动态绑定)是使用vpointer和vtable实现的.我想知道Java是如何实现的.Java是否也使用vpointer和vtable如C++或其他一些技术来知道在运行时调用哪种方法?

java oop polymorphism

4
推荐指数
1
解决办法
4226
查看次数

pwd和/ bin/pwd的输出差异

我创建了一个从我的主文件夹到/ etc /的软链接

"ln -s /etc/ foo"
Run Code Online (Sandbox Code Playgroud)

然后我将目录更改为foo

"cd foo"
Run Code Online (Sandbox Code Playgroud)

现在我执行了以下两个命令

"pwd""/bin/pwd"

两者都给了我不同的输出.

"pwd"的输出是/ home/myhome/foo,"/ bin/pwd"的输出是/ etc.虽然两个命令都是相同的,但我无法理解输出的差异.

linux bash

2
推荐指数
1
解决办法
299
查看次数

打印C指针的物理地址

我可以使用以下代码打印指针的地址

#include<stdio.
int main(){
    int *q =(int*) malloc(4);
    printf("%x\n",q);
}
Run Code Online (Sandbox Code Playgroud)

当我执行以下代码时,将打印十六进制值.它是堆上变量q的虚拟地址还是物理地址?如果它是虚拟的,我应该如何打印另一个?

c memory

1
推荐指数
1
解决办法
2688
查看次数

标签 统计

java ×2

bash ×1

c ×1

linux ×1

memory ×1

multithreading ×1

oop ×1

polymorphism ×1