小编siv*_*iva的帖子

在java中执行新创建的线程的顺序是什么

class Test {
    boolean isFirstThread = true;

    private synchronized void printer(int threadNo) {
        if(isFirstThread) {
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        isFirstThread = false;
        System.out.println(threadNo);
   }

   public void starter() {
        new Thread(){
            @Override()
            public void run() {
                printer(0);
            }
        }.start();

        new Thread(){
            @Override()
            public void run() {
                printer(1);
            }
        }.start();

        new Thread(){
            @Override()
            public void run() {
                printer(2);
            }
        }.start();

        new Thread(){
            @Override()
            public void run() {
                printer(3);
            }
        }.start();
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当我从main调用starter时.我创建了四个新的线程来调用同步函数.我知道无法预测线程的执行顺序.除非它们都等待一段时间,否则第一个线程可以完成并从同步块中退出.在这种情况下,我希望所有线程都保持在一个队列,所以我希望答案为
0
1 …

java multithreading java-threads

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

为什么不能跨平台移动对象(.obj)文件?

为什么我们不能在OS平台上从c编译中移动.obj文件并在最后使用它来构建可执行文件?

如果我们能这样做,我们可以称C为平台独立语言,如Java吗?

c c++

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

以下两个C代码之间有什么区别

我刚刚发现,如果我在文件中指定x的值为5并按照以下代码运行它,则输出为392

#include<stdio.h>
#define CUBE(r) ((r)*(r)*(r))
int main()
{
    int x;
    x=5;
    printf("%d\n", CUBE(++x));
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

但是,当我使用"scanf()"来获取x的值并为下面的代码输入5时,输出为336

#include<stdio.h>
#define CUBE(r) ((r)*(r)*(r))
int main()
{
    int x;
    scanf(" %d",&x);
    printf("y is %d\n", CUBE(++x));
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

为什么我得到这种输出

c

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

标签 统计

c ×2

c++ ×1

java ×1

java-threads ×1

multithreading ×1