IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

多线程循环输出两个数组(多线程实践)

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

用两个线程将两个数组轮流输出(数组可能不等长)。输入a1[1,2,3,4],a2[5,6,7,8,9] 输出1,5,2,6,3,7,4,8

轮流输出两个数的实现方法有多种,最简单的可以采用Synchronized来同步实现,如果这是面试场合的题目的话,恐怕不是面试官想要的答案,因为同步意味着效率不高,在这给出利用volatile可见性来实现的轮流输出的功能

public class Main {
    //开关
    volatile boolean sw = true;
    //判断是否有数组已输出完
    volatile boolean over = false;

    public static void main(String[] args) {
        int[] a1 = new int[]{1, 2, 3, 4};
        int[] a2 = new int[]{5, 6, 7, 8, 9};
        Main test = new Main();
        test.process(a1, a2);
    }

    private void process(int[] a1, int[] a2) {
        Thread t1 = new Thread(() -> {
            for (int i = 0; i < a1.length; i++) {
                while (sw != true && over == false) {
                    //自旋;可以加睡眠时间
                }
                if (sw == true) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(a1[i]);
                    sw = false;
                }
            }
            over = true;
        });
        Thread t2 = new Thread(() -> {
            for (int i = 0; i < a2.length; i++) {
                while (sw != false && over == false) {
                    //自旋
                }
                if (sw == false || over == true) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    System.out.println(a2[i]);
                    sw = true;
                }
            }
            over = true;
        });
        t1.start();
        t2.start();
    }

文章永久链接:https://tech.souyunku.com/?p=48517


Warning: A non-numeric value encountered in /data/wangzhan/tech.souyunku.com.wp/wp-content/themes/dux/functions-theme.php on line 1154
赞(72) 打赏



未经允许不得转载:搜云库技术团队 » 多线程循环输出两个数组(多线程实践)

IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码
IDEA2023.1.3破解,IDEA破解,IDEA 2023.1破解,最新IDEA激活码

评论 抢沙发

大前端WP主题 更专业 更方便

联系我们联系我们

觉得文章有用就打赏一下文章作者

微信扫一扫打赏

微信扫一扫打赏


Fatal error: Uncaught Exception: Cache directory not writable. Comet Cache needs this directory please: `/data/wangzhan/tech.souyunku.com.wp/wp-content/cache/comet-cache/cache/https/tech-souyunku-com/index.q`. Set permissions to `755` or higher; `777` might be needed in some cases. in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php:367 Stack trace: #0 [internal function]: WebSharks\CometCache\Classes\AdvancedCache->outputBufferCallbackHandler() #1 /data/wangzhan/tech.souyunku.com.wp/wp-includes/functions.php(5109): ob_end_flush() #2 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(303): wp_ob_end_flush_all() #3 /data/wangzhan/tech.souyunku.com.wp/wp-includes/class-wp-hook.php(327): WP_Hook->apply_filters() #4 /data/wangzhan/tech.souyunku.com.wp/wp-includes/plugin.php(470): WP_Hook->do_action() #5 /data/wangzhan/tech.souyunku.com.wp/wp-includes/load.php(1097): do_action() #6 [internal function]: shutdown_action_hook() #7 {main} thrown in /data/wangzhan/tech.souyunku.com.wp/wp-content/plugins/comet-cache/src/includes/traits/Ac/ObUtils.php on line 367