Java多线程挑战

Java多线程挑战,java,multithreading,Java,Multithreading,有人能解释一下或者举一个例子说明如何在Java中创建具有不同功能的多线程吗 这是代码。。。我正在尝试创建一个线程,它执行public void rnd_list()应该执行的任务(一个包含30个随机数的列表),这与public void run()中定义的任务不同,public void run()是默认情况下执行thread.start()时使用的方法。我想知道如何在同一个类Apple中创建一个线程,该类具有不同的功能,在本例中是public void rnd_list()中的一个 impor

有人能解释一下或者举一个例子说明如何在Java中创建具有不同功能的多线程吗

这是代码。。。我正在尝试创建一个线程,它执行public void rnd_list()应该执行的任务(一个包含30个随机数的列表),这与public void run()中定义的任务不同,public void run()是默认情况下执行thread.start()时使用的方法。我想知道如何在同一个类Apple中创建一个线程,该类具有不同的功能,在本例中是public void rnd_list()中的一个

import java.util.Random;
公共类Apple实现了Runnable{
字符串名;
整数时间、数字、第一个、最后一个、最大值;
随机r=新随机();
随机n=新随机();
int[]数组=新的int[10];
公共苹果(字符串s、整数f、整数l){
name=s;
第一个=f;
last=l;
最大值=数组[0];
}
//公共无效rnd_列表(){
//对于(int j=0;j<30;j++){
//编号=n.nextInt(100);
//数组[j]=个数;
//System.out.println(“线程”+name+“数组[“+j+”]=”+array[j]);
//     }
// }
公开募捐{
试一试{
for(int i=first;i
一个好的开始位置应该是

一个好的开始位置应该是

当使用Runnable创建线程时,调用Thread.start()时将运行Runnable.run()方法。如果希望运行rnd_list()方法,有两个选项

  • 创建一个实现Runnable的新类,并在该类中使用run()方法调用rnd_list()
  • 更改Apple.run()的实现以检查属于Apple的某些状态,并可以选择执行rnd_list()

  • 当使用Runnable创建线程时,将在调用Thread.start()时运行Runnable.run()方法。如果希望运行rnd_list()方法,有两个选项

  • 创建一个实现Runnable的新类,并在该类中使用run()方法调用rnd_list()
  • 更改Apple.run()的实现以检查属于Apple的某些状态,并可以选择执行rnd_list()

  • 澄清一下:您想在单独的线程中运行rnd_list(),并将run()用于其他任务吗

    这不是一个非常好的实践,但是您可以通过将这个方法添加到您的Apple类中来启动这个特定方法的新线程

       Thread startRndList()
       {
          Thread t = new Thread(new Runnable() {
                  public void run()
                  {
                      rnd_list();
                  }
            });
          t.start();
          return t;
       }
    

    但与其直接实例化线程,不如使用并发utils类。

    只是澄清一下:您想在单独的线程中运行rnd_list(),并使用run()执行其他任务吗

    这不是一个非常好的实践,但是您可以通过将这个方法添加到您的Apple类中来启动这个特定方法的新线程

       Thread startRndList()
       {
          Thread t = new Thread(new Runnable() {
                  public void run()
                  {
                      rnd_list();
                  }
            });
          t.start();
          return t;
       }
    

    但与其直接实例化线程,不如使用并发utils类。

    我认为可以使用实现可运行的匿名类或嵌套类,但这会很麻烦,并且可能会出现并发问题…

    我认为可以使用实现可运行的匿名类或嵌套类,但这会很糟糕,您可能会遇到并发问题…

    谢谢,但我已经搜索过了。。。KJP,你点击了那个链接吗?我点击了链接,否则我就无法知道我是否访问了这个链接。这个文档写得很好,涵盖了你需要知道的几乎所有内容。你的问题很模糊,如果你有什么需要澄清的,我们很乐意解释。谢谢你的建议,我会把代码放进去,我的问题会被更新谢谢,但我已经在那里搜索了。。。KJP,你点击了那个链接吗?我点击了链接,否则我就无法知道我是否访问了这个链接。这个文档写得很好,涵盖了你需要知道的几乎所有内容。你的问题很模糊,如果你有什么需要澄清的,我们很乐意解释。谢谢你的建议,我会把代码放进去,我的问题会更新。我对你的问题做了一些编辑。。。它是“Java”,而不是“Java”。然后,Sun惯例(它们被广泛遵循)建议让类名以大写字母开头(因此我将其改为“Apple”而不是“Apple”)。在Java中,我们有“方法”,而不是“函数”。我编辑了一些你的问题。。。它是“Java”,而不是“Java”。然后,Sun惯例(它们被广泛遵循)建议让类名以大写字母开头(因此我将其改为“Apple”而不是“Apple”)。在Java中,我们有“方法”,而不是“函数”。