在我们的糖果工厂继续升级的旅程中,让我们继续探索多线程的奇妙冒险。这次,我们引入了更多的创新,让糖果工厂的故事更为精彩。
1.引入新的生产工艺 - 多样化糖果a.彩虹糖果制作机我们引入了一台彩虹糖果制作机,可以制作出多彩缤纷的糖果。
public class RainbowCandyMaker implements Runnable {
    @Override
    public void run() {
        for (int i = 1; i <= 5; i  ) {
            System.out.println("制作彩虹糖果 #"   i);
            try {
                Thread.sleep(600); // 模拟制作彩虹糖果过程
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

为了与彩虹糖果相匹配,我们引入了一个特色包装系统,可以根据糖果颜色进行个性化包装。
public class SpecialPackagingSystem implements Runnable {
    @Override
    public void run() {
        for (int i = 1; i <= 5; i  ) {
            System.out.println("特色包装彩虹糖果 #"   i);
            try {
                Thread.sleep(400); // 模拟特色包装过程
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

为了提高生产效率,我们引入了一个智能分类机器人,可以智能地将不同类型的糖果分类。
public class SmartSortingRobot implements Runnable {
    @Override
    public void run() {
        for (int i = 1; i <= 5; i  ) {
            System.out.println("智能分类彩虹糖果 #"   i);
            try {
                Thread.sleep(500); // 模拟智能分类过程
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

现在,我们将新引入的生产工艺与之前的糖果生产线结合,使用多线程实现各个工艺的并行执行。
public class AdvancedCandyFactory {
    public static void main(String[] args) {
        // 创建彩虹糖果制作机、特色包装系统和智能分类机器人
        RainbowCandyMaker rainbowCandyMaker = new RainbowCandyMaker();
        SpecialPackagingSystem specialPackagingSystem = new SpecialPackagingSystem();
        SmartSortingRobot smartSortingRobot = new SmartSortingRobot();
        // 创建线程
        Thread rainbowMakerThread = new Thread(rainbowCandyMaker);
        Thread specialPackagingThread = new Thread(specialPackagingSystem);
        Thread sortingRobotThread = new Thread(smartSortingRobot);
        // 启动线程
        rainbowMakerThread.start();
        specialPackagingThread.start();
        sortingRobotThread.start();
        try {
            // 主线程等待所有工艺完成
            rainbowMakerThread.join();
            specialPackagingThread.join();
            sortingRobotThread.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        // 生产完成后的其他操作
        System.out.println("糖果工厂生产完成,进行其他操作。");
    }
}

通过运行这个升级版的糖果工厂程序,你将看到生产线上的各个环节高效运行。彩虹糖果制作机、特色包装系统和智能分类机器人同时工作,多线程的奇妙冒险使得整个生产过程更加多彩且高效。
这个故事突出了多线程的灵活性和协同工作的奇妙冒险,确保了在生产线上各个环节的并行执行,提高了整个工厂的生产效率。多线程的优势在于各个环节可以同时进行,创造出更为多样化、高效的糖果工厂。
join() 是一个线程控制方法,用于让一个线程等待另一个线程执行完成。
具体地说,当一个线程调用另一个线程的 join() 方法时,它会等待被调用的线程执行完毕,然后再继续执行自己的任务。
在糖果工厂的例子中,我们使用 join() 方法确保主线程等待所有工艺线程执行完成后再执行后续操作。以下是关于 join() 方法的重要解释:
1.等待线程执行完成- 使用场景: 在多线程环境中,某个线程需要等待另一个线程完成后再继续执行。
- 实现方式: 被等待的线程调用 join() 方法,等待线程(通常是主线程)会在这个方法上等待,直到被等待的线程执行完成。
在我们的例子中,主线程使用 join() 方法等待各个工艺线程执行完成:
- rainbowMakerThread.join(): 主线程等待 rainbowMakerThread 执行完成。
- specialPackagingThread.join(): 主线程等待 specialPackagingThread 执行完成。
- sortingRobotThread.join(): 主线程等待 sortingRobotThread 执行完成。
join() 方法的使用可以确保各个线程按照预期的顺序执行。在糖果工厂的例子中,这保证了各个糖果制作和包装的工艺是按照规定的先后顺序完成的。
4.处理中断异常join() 方法声明了可能抛出 InterruptedException 异常,因为线程在等待的过程中,如果被中断,就会抛出中断异常。在例子中,我们通过 try-catch 块处理了中断异常。
5.确保主线程在所有工艺完成后继续执行通过 join() 方法,我们可以确保主线程在等待的工艺线程执行完成后再继续执行,从而保证了整个糖果工厂流程的完整性。
,


















