Fra*_*eli 3 java lambda multithreading
我需要一个Java 8的多线程示例.
我需要能够手动选择线程数.
在下面的示例中,我遇到Thread.currentThread().getName()的问题,我需要使用lambda表达式.
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Thread {
public static void main(String args[]) {
ExecutorService service = Executors.newFixedThreadPool(10);
for (int i =0; i<100; i++){
service.submit(new Task(i));
}
}
final class Task implements Runnable{
private int taskId;
public Task(int id){
this.taskId = id;
}
@Override
public void run() {
System.out.println("Task ID : " + this.taskId +" performed by "
+ Thread.currentThread().getName());
}
}
Run Code Online (Sandbox Code Playgroud)
Jyn*_*oot 10
使用IntStream可以轻松完成Lambda.
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.stream.IntStream;
public class ThreadLauncher
{
public static void main(String args[])
{
ExecutorService service = Executors.newFixedThreadPool(10);
IntStream.range(0, 100).forEach(i -> service.submit(new Task(i)));
}
}
final class Task
implements Runnable
{
private int taskId;
public Task(int id)
{
this.taskId = id;
}
@Override
public void run()
{
System.out.println("Task ID : " + this.taskId + " performed by "
+ Thread.currentThread().getName());
}
}
Run Code Online (Sandbox Code Playgroud)
对于lambda,我建议:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String args[]) {
ExecutorService service = Executors.newFixedThreadPool(10);
for (int i =0; i < 100; i++) {
final int fi = i;
service.submit(() -> System.out.println("Task ID : " + fi + " performed by "
+ Thread.currentThread().getName()));
}
}
}
Run Code Online (Sandbox Code Playgroud)
或者如果您想全力以赴lambdas
public class Main {
public static void main(String args[]) {
ExecutorService service = Executors.newFixedThreadPool(10);
IntStream.range(0, 100)
.forEach(i -> service.submit(()
-> System.out.println("Task ID : " + i + " performed by " + Thread.currentThread().getName())));
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16226 次 |
| 最近记录: |