package Threads;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
public class WaysOfCreatThreads {
public static void main(String[] args) {
new MyThread().start();
new Thread(new MyRunnable()).start();
new Thread(new FutureTask<>(new MyCallable<Integer>())).start();
ExecutorService service = Executors.newFixedThreadPool(10);
service.execute(new MyRunnable());
service.submit(new MyCallable<Integer>());
service.shutdown();
}
private static class MyThread extends Thread {
@Override
public void run() {
System.out.println("Thread");
}
}
private static class MyRunnable implements Runnable {
@Override
public void run() {
System.out.println("Runnable");
}
}
private static class MyCallable<Integer> implements Callable<java.lang.Integer> {
@Override
public java.lang.Integer call() throws Exception {
System.out.println("Callable");
int a = 10;
return a;
}
}
}