Java 创建n个线程
我有一个java方法,我想创建n个线程,然后让每个线程打印出从1到100的数字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); }
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. }
注意:这里对列表的每个元素同步调用方法名称(线程参数)。只需启动线程。只需启动线程。