java - 如果我在 main 方法中执行 Thread.sleep(10000) ,子线程会发生什么

标签 java android multithreading jakarta-ee

我在我的 main 方法中的 for 循环中创建了一些可调用线程,并启动了所有这些线程。

启动所有线程后,我有 Thread.sleep(10000)。在这种情况下,我的子可调用线程会发生什么情况。

伪代码:

    public static void main(String[] args){
        Map<String, String> columnNames_TypesMap = tableUtil.getColumnNamesAndTypesFromOracleDB(toTable);

        ExecutorService executor = Executors.newFixedThreadPool(50);

        Set<Future<String>> values = Collections.newSetFromMap(new ConcurrentHashMap<Future<String>, Boolean>());
        Future<String> value = null;
        boolean valueSizeLogged = false;
        long preValuesSize = values.size();

        outer: while (true) {
            //In the below method I am reducing values size.
            count = tableUtil.checkIfAllRowsCopied(values, count, totalNoOfRecordsInFromTable);

            if (values.size() > 5) {
                logger.info("****** Hence we do not create new threads. We do wait for the created threads to compelte");
                Thread.sleep(sleepTime);//Here I am putting my main thread to sleep
                continue outer;
            }

            for (int indexForThread = 1; indexForThread <= 15; indexForThread++) {
                startingRange = endingRanges + 1;
                endingRanges = endingRanges + maxNoOfRecordsPerThread;

                Callable<String> callable2 = new InsertionCallable(as400SchemaName + "." + fromTable, startingRange, endingRanges, columnNames_TypesMap, toTable);
                value = executor.submit(callable2);//Child Thread
                values.add(value);
            }
        }
    }

在上面的代码中,我首先创建了 15 个线程。在第二个循环(外部 while)中,如果值大小大于 5,我正在执行 Thread.sleep(),此时创建的子线程会发生什么情况?子线程是否也会进入休眠模式或子线程会发生什么情况。

请帮忙。非常感谢您的帮助。 谢谢。

最佳答案

子线程不受父线程 hibernate (或终止,或其他任何事情)的影响。他们会很高兴地一起吃。

关于java - 如果我在 main 方法中执行 Thread.sleep(10000) ,子线程会发生什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45279348/

相关文章:

Android Studio,Windows : ADB not responding. 如果您想重试,请手动杀死 "adb.exe"并单击 'Restart'

android - 在 Android 上创建多个 preferences.xml 文件时如何重用代码?

c++ - 如何用 pthread 捕获堆栈溢出?

java - @ManyToOne 级联更新/删除对象,父级 - 子级

java - 一段时间后将变量声明为常量 - 解决方法是什么

java - Clojure 列出 uberjar 资源中的子文件夹

android - 如何设置启动画面一直持续到数据库加载?

c++ - 使用 boost 线程只能工作一半

c++ - std::thread 到 std::async 会带来巨大的性能提升。怎么可能?

java - 需要一个复杂的 cssSelector 来区分同一页面上的两个保存按钮