Java 创建n个线程

Java 创建n个线程,java,multithreading,Java,Multithreading,我有一个java方法,我想创建n个线程,然后让每个线程打印出从1到100的数字 public void createThreads(int n){ for (int i = 0; i < n; i++) { new Thread(() -> { for (int j = 0; j < 100; j++) { System.out.println(j); }

我有一个java方法,我想创建n个线程,然后让每个线程打印出从1到100的数字

public void createThreads(int n){
    for (int i = 0; i < n; i++) {
        new Thread(() -> {
            for (int j = 0; j < 100; j++) {
                System.out.println(j);


            }
        });       
    }
}
public void createThreads(int n){
对于(int i=0;i{
对于(int j=0;j<100;j++){
系统输出println(j);
}
});       
}
}

每当我运行这个方法时,即使我传递了一个参数,也不会输出任何内容。如何解决此问题?

创建线程是不够的,您还需要创建线程

new Thread(() -> { ... }).start();

我建议在这里进行一些重构

从名为
createThreads
的方法中,我希望返回创建的线程-
Thread[]createThreads(int n)
(1)

代码不容易读取-将
线程
可运行的
移动到单独的方法中会更清晰(2)

如果在方法中同时创建和启动线程(3),则名称
createThreads
将不准确。将其重命名为
createAndStartThreads
,或者创建两个单独的方法
createThreads
startThreads
,这两个方法更可取

公共线程[]创建线程(int n){
最终螺纹[]螺纹=新螺纹[n];
对于(int i=0;i对于(intj=1;j来说,创建线程是不够的,还需要创建线程

new Thread(() -> { ... }).start();

我建议在这里进行一些重构

从名为
createThreads
的方法中,我希望返回创建的线程-
Thread[]createThreads(int n)
(1)

代码不容易读取-将
线程
可运行的
移动到单独的方法中会更清晰(2)

如果同时在方法中创建和启动线程(3),则名称
createThreads
将不准确。请将其重命名为
createAndStartThreads
,或者创建两个单独的方法
createThreads
startThreads
,这是更可取的方法

公共线程[]创建线程(int n){
最终螺纹[]螺纹=新螺纹[n];
对于(int i=0;i对于(int j=1;j没有打印任何内容,因为您没有启动线程

public void createThreads(int n){
    for (int i = 0; i < n; i++) {
        new Thread(() -> {
            for (int j = 1; j <= 100; j++) {
                System.out.println(j);
            }
        }).start(); // <-- .start() makes the thread start running   
    }
}
public void createThreads(int n){
对于(int i=0;i{

对于(int j=1;j没有打印任何内容,因为您没有启动线程

public void createThreads(int n){
    for (int i = 0; i < n; i++) {
        new Thread(() -> {
            for (int j = 1; j <= 100; j++) {
                System.out.println(j);
            }
        }).start(); // <-- .start() makes the thread start running   
    }
}
public void createThreads(int n){
对于(int i=0;i{

对于(intj=1;j这就是我创建N个线程所做的。 这里提到了一种完全不同的方法,如果您想指定 线

1. Thread T[] = new Thread[list.size()];
2. for (int i = 0; i < list.size(); i++) {
3.     T[i] = new Thread(new constructor_name());
4.     T[i].setName(list.get(i));
5.     T[i].start();
6. }

注意:这里对列表的每个元素同步调用方法名称(thread参数)。

这就是我创建N个线程所做的。 这里提到了一种完全不同的方法,如果您想指定 线

1. Thread T[] = new Thread[list.size()];
2. for (int i = 0; i < list.size(); i++) {
3.     T[i] = new Thread(new constructor_name());
4.     T[i].setName(list.get(i));
5.     T[i].start();
6. }

注意:这里对列表的每个元素同步调用方法名称(线程参数)。

只需启动线程。只需启动线程。