• 代码反思(1)


    1、for循环中需要睡眠等待

    (1) 利用continue

    package org.samuel.ch01;

    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;

    public class Processor {
    List<String> tasks;
    Random random;
    int size;

    public Processor(List<String> tasks) {
    this.tasks = tasks;
    this.random = new Random();
    this.size = tasks.size();
    }

    public void process() {
    for (int i = 0; i < size; ) {
    if (!isRunnable()) {
    try {
    System.out.println("System is busy now...");
    Thread.sleep(1000);
    } catch (InterruptedException ex) {
    ex.printStackTrace();
    }
    continue;
    }
    String task = tasks.get(i);
    doTask(task);
    i++;
    }
    }

      private boolean isRunnable() {
    return random.nextInt() % 2 == 0;
    }

    private void doTask(String task) {
    System.out.println("Finish task : " + task);
    }

    public static void main(String[] args) {
    List<String> tasks = Arrays.asList("samuel", "lin", "by", "badboyby", "linlin");
    Processor processor = new Processor(tasks);
    processor.process();
    }
    }

    (2) 使用while循环

    package org.samuel.ch01;

    import java.util.Arrays;
    import java.util.List;
    import java.util.Random;

    public class AdvancedProcessor {
    List<String> tasks;
    Random random;
    int size;

    public AdvancedProcessor(List<String> tasks) {
    this.tasks = tasks;
    this.random = new Random();
    this.size = tasks.size();
    }

    public void process() {
    for (String task : tasks) {
    while(!isRunnable()) {
    try {
    System.out.println("System is busy now...");
    Thread.sleep(1000);
    } catch (InterruptedException ex) {
    ex.printStackTrace();
    }
    }
    doTask(task);
    }
    }

      private boolean isRunnable() {
    return random.nextInt() % 2 == 0;
    }

    private void doTask(String task) {
    System.out.println("Finish task : " + task);
    }

    public static void main(String[] args) {
    List<String> tasks = Arrays.asList("samuel", "lin", "by", "badboyby", "linlin");
    AdvancedProcessor processor = new AdvancedProcessor(tasks);
    processor.process();
    }
    }

    对比两种方案,从代码逻辑来看,第2种方案更容易理解。第一种方案的continue跳转以及for循环i++的位置,比较晦涩。


  • 相关阅读:
    Fiddler界面详解
    Windows平台下Java,tomcat安装与环境配置
    为什么要装Tomcat?
    实例五租房子
    实例四投票
    易犯的PHP小错误及相应分析
    MYSQL数据库错误代码提示汇总
    php mysql_insert_id()
    实例三搜索
    实例二增删改查
  • 原文地址:https://www.cnblogs.com/onliny/p/2207730.html
Copyright © 2020-2023  润新知