gpt4 book ai didi

java - 我是编程的新手,需要一些帮助和建议

转载 作者:行者123 更新时间:2023-12-01 20:52:36 25 4
gpt4 key购买 nike

我需要编写两个程序。 1 个顺序(完成)和 1 个并行,我已经做了一些事情,但我不知道我是否已使其并行,我还需要知道:

  1. If (Thread.State state = Thread.currentThread().getState();) 是显示线程状态的代码
  2. 如何将不同的线程分配给不同的处理器(4核)
  3. 如何显示处理器的状态
  4. 每个处理器的计算
  5. 如何生成错误消息(内存一致性错误等)

以下是我的代码:

class Threads implements Runnable {

@Override
public void run() {

Thread t = Thread.currentThread();

Thread.State state = Thread.currentThread().getState();
String Assignment = "calculations in array";
String name = "os.name";
String version = "os.version";
String architecture = "os.arch";
String[] array = new String[1312500];
int size = array.length;

Random r = new Random();
int[] values = new int[1312500];
int sumarray = 0;
int CountD = 0;

for (int i = 0; i < values.length; i++) {
int randomint = r.nextInt(100);

values[i] = randomint;

if ((values[i] % 2 != 0) && (values[i] >= 25 && values[i] <= 75)) {
sumarray += values[i];
CountD++;
}
}

System.out.println(t.getName());
System.out.println("Thread Id " + t.getId());
System.out.println("Thread Priority " + t.getPriority());
System.out.println("status " + state);
System.out.println("OS Name: " + System.getProperty(name));
System.out.println("OS Version: " + System.getProperty(version));
System.out.println("OS Architechture: " + System.getProperty(architecture));
System.out.println(Assignment);
System.out.println("Size of the Array is: " + array.length);
System.out.println("Total number of system cores(processors): " + Runtime.getRuntime().availableProcessors());
System.out.println("Difference of Array and Processors 1312500/4 = "
+ array.length / Runtime.getRuntime().availableProcessors());
System.out.println("The size of array is divisible by the number of processors");
System.out.println("Summary is: " + sumarray);
System.out.println("The Average is: " + (sumarray / CountD));
}

}

主类:

class Concurrent {

public static void main(String[] args) {
Thread t1 = new Thread(new Threads());
t1.start();

Thread t2 = new Thread(new Threads());
t2.start();

Thread t3 = new Thread(new Threads());
t3.start();

Thread t4 = new Thread(new Threads());
t4.start();
}
}

最佳答案

[I need to know] If Thread.State state = Thread.currentThread().getState(); is the code to display the status of a thread.

它声明了一个名为state的变量,并用执行它的线程的state来初始化它。 ( https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html

该代码片段不显示任何内容,但后续的 System.out.println("status "+ state); 会将状态的表示写入控制台。

我无法知道 Thread.State 是否对应于您所说的“状态”,但调用 Thread.currentThread().getState(); 会产生无信息,因为任何线程在调用 getState() 时其状态始终为 RUNNABLE

[I need to know] how to assign different threads to different processors

我打赌你不会。

您所询问的称为“处理器关联”。大多数程序依赖操作系统自动调度可用 CPU 上的可运​​行线程。只有非常复杂的程序(请注意,“复杂”并不总是等于“好”)才需要修改它。

没有标准方法来设置 Java 线程的 CPU 关联性,但可能有一些方法可以在您的特定操作系统上使用。您可以通过谷歌搜索“Java 处理器亲和性”来获取更多信息。

[I need to know] How to display the status of the processor

您必须解释“状态”的含义以及哪个处理器以及何时?

根据“状态”的含义,如果您编写代码来询问运行该代码的同一处理器的“状态”,那么答案可能永远不会改变。就像 Thread.currentThread().getState() 的结果永远不会改变一样。

处理器“状态”是大数据中心的系统管理员喜欢在图表上看到的那种东西,但它们在程序中很少有用,除非,再一次,你正在做一些非常重要的事情。复杂。

[I need to know] how to generate error messeges.

最简单的方法是使用 System.out.println(...)System.err.println(...)

也许您真的想问其他问题,例如如何知道何时报告错误,或者如何处理异常。

大多数 Java 库例程在出现问题时都会抛出异常。在这种情况下你所要做的就是完全忽略它。如果您没有编写任何代码来处理异常,那么您的程序将自动打印一条错误消息并在抛出异常时停止。

关于java - 我是编程的新手,需要一些帮助和建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42996852/

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