gpt4 book ai didi

java - 用于生成、转换和计数频率的线程

转载 作者:行者123 更新时间:2023-12-02 01:39:56 26 4
gpt4 key购买 nike

我想创建 3 个线程:一个用于生成随机字符串,一个用于将该字符串转换为小写,另一个用于计算该字符串中单词的频率。

我使用 (int[] buffer, Semaphore mutex 等构造函数创建了 GeneratorConvertFreq ,信号量项,信号量 spc)。我创建了一个 Start 类:

public class Start
{
static int first = 0;
static ind last = 0;
}

带有信号量mutexitemsspc

这是我的 Generator 类的 run 方法。它工作正常并生成长度为 15 的随机大写字符串。

public void run()
{
Random rand = new Random();
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int size = 15;

while (true)
{
try
{
char[] res = new char[size];

for (int i = 0; i < size; i++)
{
res[i] = alphabet.charAt(rand.nextInt(alphabet.length()));
}

System.out.println("String generated: " + String.valueOf(res));

spc.acquire();
mutex.acquire();

// buffer[Start.last] = res[0];
Start.last = (Start.last + 1) % 100;

mutex.release();
items.release();

Thread.sleep(4000);
}

catch (InterruptedException e)
{
e.printStackTrace();
}
}
}

我的问题是:如何使 ConvertFreq 读取我的数组?我知道如何转换为小写(当然)并计算数组中每个字母的频率。我已经使用 items.acquire();mutex.acquire() 为两个类创建了 run 方法,但似乎没有任何效果。

感谢您花时间帮助我^^

最佳答案

如果我理解正确的话,您希望运行 Generator 线程来生成字符串,运行 Convert 线程来转换生成的字符串和 Freq 线程来分析转换后的字符串。

由于所有三个线程都需要从其他线程读取结果,因此您应该将这些数据保存在上级类/方法中。您可以创建三个集合,例如 newStringsconvertedStringsfrequencies。您的 Generator 线程创建字符串并将它们添加到 newStrings 集合中。您的 Convert 线程查看 newStrings 集合并从中获取一个新字符串(通过删除所有旧字符串或计算索引),将其转换并将其添加到 convertedStrings 集合。然后,您的 Freq 线程再次从 convertedStrings 集合中获取一个新的转换后的字符串,计算该字符串中单词的频率,并将结果添加到 frequencies 中> Collection 。

关于java - 用于生成、转换和计数频率的线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57494014/

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