gpt4 book ai didi

java - 如何有多个循环/进程/等。同时发生?

转载 作者:太空宇宙 更新时间:2023-11-04 15:21:47 24 4
gpt4 key购买 nike

在编码时——你可以使用 Java 作为引用/示例,因为我最熟悉它——你如何设法让多个“ Action ”同时连续发生?我理解,通过足够的循环/boolean 值,您可以设置简单的代码来不断发生——根据不同的输入产生不同的输出——但这并不完全是我的意思。据我所知,代码是相当顺序的(这很好,但我的意思是纯粹的、具体的顺序)。例如,对于某种转换计算器:请求输入、接收输入/处理错误输入、转换、显示、请求再次转换/完成。

但是,对于更复杂的代码,我想知道如何允许各种操作/事件同时发生,或者这种情况的可能性。例如,移动应用程序。允许在(几乎)任何给定时间更改设置,而不是等待程序运行中的特定时间来请求更改设置。同样,视频游戏允许在任何给定时间进行输入,而其他 Action 仍在发生(例如跳跃时移动以及允许人工智能/敌人互动)。是的,代码仍然必须遵循顺序,但是在同一个程序中运行其他进程/过程时,如何同时发生各种输入/输出或操作?

简而言之,我能想到的描述我所问问题的最佳方式是:如何在一个项目中同时运行“多个程序/代码”?

最佳答案

您所描述的是并发或多线程(请查看 Java 文档 http://docs.oracle.com/javase/tutorial/essential/concurrency/ 或其他教程 http://www.vogella.com/tutorials/JavaConcurrency/article.html )。这使您可以通过利用多个核心或在 Activity 之间快速切换以产生同时性的错觉来同时完成多项任务。只是一些基础知识...为此,您创建多个 Thread 对象,并为每个线程对象提供一个 Runnable 对象,该对象基本上用于告诉线程您想要它做什么。每个线程只能执行一次。线程也可以进入“ sleep ”状态,这意味着它们的执行将暂停一段给定的时间(您想要这样做的一个例子可能是,如果您正在制作一个计时器,并且需要一些东西来更改时间)屏幕上每秒都会显示一次。)您还应该意识到线程有可能抛出异常,因此通常必须捕获​​异常。

我编写了这个程序作为线程的示例。它将打印出正在运行的线程,然后在唤醒之前将线程置于 sleep 状态,并为每个线程重复 25 次。

Runnable myRunnable = new Runnable() {

public void run() {

try {
for (int i = 0; i < 26; i++) {
System.out.println(Thread.currentThread().getName()
+ " is running.");
Thread.sleep(500);
}
} catch (InterruptedException e) {
e.printStackTrace();
}

}
};

Thread a = new Thread(myRunnable, "Thread one");
a.start();
Thread b = new Thread(myRunnable, "Thread two");
b.start();
}

这给出了输出

Thread one is running.
Thread one is running.
Thread two is running.
Thread two is running.
Thread one is running.
Thread two is running.
Thread one is running.
Thread one is running.
Thread two is running.

请注意每次输出都不同,并且不像您通常习惯的那样从线程一到线程二线性进展。

关于java - 如何有多个循环/进程/等。同时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20320664/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com