如果我像这样并行地运行一些作业:
#!/bin/bash
for i in `seq 1 100`;
do
./program data$i.txt &
done
这意味着我需要100个内核?或者,如果我没有100个核心,一些作业会等待,或者它们都会在较低的核心上运行,那么一个以上的作业将被分配给一个核心?如果我需要100个内核,我应该做什么来一次运行10个,而不必使for循环从1到10和运行bash文件10次?
如何在从线程池创建的线程之间切换?我创建了许多线程,但我只想要一个线程打印一些东西,其他线程处于等待状态。现在,在打印之后,我希望这个线程进入等待状态,然后其他一些线程获得这个锁,并像前一个线程一样打印,然后进入等待状态。这种模拟一次又一次地进行,直到满足某些条件。获取锁的线程是随机化的,不需要按顺序进行。如果可能的话,稍后你可以解释一下,我是如何实现的,也许可以使用队列。
我是线程的新手,所以我想要实现的东西如下。我知道这是错误的,但我希望你能给出一个解决方案,并就我想要实现的目标做出一点解释。
public class Processor implements Runnable{
背景
我是一名CS学生,今天我们在课堂上学习了Java多线程编程.教授要求学生编写一个简单的程序来演示线程的调度。每个学生都有这样的代码:
public class MyThread extends Thread {
private int num;
public MyThread(int num) {
this.num = num;
}
public void run() {
System.out.println("Thread " + num + " is starting.");