java线程的四种创建方式
public class ExtendsThread extends Thread{
@Override
public void run() {
System.out.println("开始运行线程的主方法run方法");
}
public static void main(String[] args) {
ExtendsThread threadTest = new ExtendsThread();
threadTest.start();
}
}
public class ImplRunable implements Runnable{
@Override
public void run() {
System.out.println("开始运行线程的主方法run方法");
}
public static void main(String[] args) {
ImplRunable implRunable = new ImplRunable();
Thread t = new Thread(implRunable);
t.start();
}
}
public class ImplCallable implements Callable {
@Override
public String call(){
System.out.println("开始运行线程的主方法run方法");
return "运行结束":
}
public static void main(String[] args) {
Callable<String> callable = new ImplCallable();
FutureTask<String> futureTask = new FutureTask<>(callable);
Thread t = new Thread(futureTask);
t.start();
}
}
public class ThreadPool{
public static void main(String[] args) {
new ThreadPool().newFixedThreadPool();
new ThreadPool().newCachedThreadPool();
new ThreadPool().newSingleThreadExecutor();
}
public void newFixedThreadPool(){
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0;i < 3;i++) {
executorService.execute(new Runnable(){
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + “线程开始执行”);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + “线程执行结束”);
}
});
}
}
public void newCachedThreadPool(){
ExecutorService executorService = Executors.newCachedThreadPool();
for (int i = 0;i < 3;i++) {
executorService.execute(new Runnable(){
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + “线程开始执行”);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + “线程执行结束”);
}
});
}
}
public void newSingleThreadExecutor(){
ExecutorService executorService = Executors.newSingleThreadExecutor();
for (int i = 0;i < 3;i++) {
executorService.execute(new Runnable(){
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + “线程开始执行”);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + “线程执行结束”);
}
});
}
}
}