为了账号安全,请及时绑定邮箱和手机立即绑定

如何在一个线程中同时执行多个动作?

如何在一个线程中同时执行多个动作?

慕勒3428872 2022-12-15 16:06:17
我需要船只同时装卸货物。有没有办法在java中做到这一点?我设法让多艘船同时在港口工作,但他们先卸货,然后再装载新的板条箱。那是我的 Ship 类变体public class Ship implements Runnable {    String name;    Port port;    Queue<Goods> storage;    Pier pier;    int capacity;    int numOnBoard;    public Ship(String name, Port port, int capacity) {        this.name = name;        this.port = port;        storage = new LinkedBlockingDeque<>(capacity);        this.capacity = capacity;        int num=(int)(Math.random()*capacity);        numOnBoard=num;        for (int i = 0; i < num; i++) {            storage.add(new Goods());        }    }    public void run() {        try {            int unl = 0;            int l = 0;            pier = port.getPier();            System.out.println("Ship " + name + " taken " + pier.name);            while (unload()) {                if(unl>=numOnBoard) break;                unl++;                System.out.println("Ship " + name + " unloaded cargo.");                Thread.sleep(new Random(100).nextInt(500));            }            System.out.println("Ship " + name + " unloaded " + unl + " crates.");            Thread.sleep(100);            while (load()) {                l++;                System.out.println("Ship " + name + " loaded cargo.");                Thread.sleep(new Random(100).nextInt(500));            }            System.out.println("Ship " + name + " loaded " + l + " crates.");            port.releasePier(pier);            System.out.println("Ship " + name + " released " + pier.name);        } catch (InterruptedException e) {            e.printStackTrace();        }    }    private boolean unload() {        if (storage.size() <= 0) return false;        return port.addGoods(storage.poll());    }    private boolean load() {        if (storage.size() >= capacity) return false;        return port.takeGoods(storage,numOnBoard);    }}和港口
查看完整描述

1 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您试图在单个线程中完成的正是多个线程的目的。多线程使您能够以多种活动可以在同一程序中同时进行的方式编写:

多线程程序包含两个或多个可以并发运行的部分,每个部分可以同时处理不同的任务,从而优化利用可用资源,特别是当您的计算机有多个 CPU 时。

根据定义,多任务处理是指多个进程共享公共处理资源(例如 CPU)。多线程将多任务的概念扩展到应用程序中,您可以在其中将单个应用程序中的特定操作细分为单独的线程。每个线程都可以并行运行。操作系统不仅在不同的应用程序之间划分处理时间,而且在应用程序内的每个线程之间划分处理时间。

在此处阅读有关 Java 多线程的更多信息。


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 93 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信