1.通过实现Runnable接口创建线程
package com.mystudy.test;
public class TestRunnable implements Runnable {
@Override
public void run() {
System.out.println("线程中需要执行的代码块···");
}
public static void main(String[] args) {
Thread thread = new Thread(new TestRunnable());
thread.start();
}
}
2.通过继承Thread类创建线程
package com.mystudy.test;
public class TestThread extends Thread {
@Override
public void run() {
System.out.println("线程中需要执行的代码块···");
}
public static void main(String[] args) {
Thread th = new TestThread();
th.start();
}
}
3.通过实现callable接口创建线程
package com.mystudy.test;
import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
public class TestCallable implements Callable {
@Override
public Object call() throws Exception {
System.out.println("线程中需要执行的代码块···");
return "success";
}
public static void main(String[] args) {
Callable call = new TestCallable();
FutureTask future = new FutureTask(call);
future.run();
}
}
4.使用Executor框架来创建线程池
package com.mystudy.test;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class TestThreadPoolExecutor {
public static void main(String[] args) {
ExecutorService es1 = Executors.newSingleThreadExecutor();
for (int i = 0; i < 10; i++) {
es1.submit(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行任务");
}
});
}
ExecutorService es2 = Executors.newFixedThreadPool(3);
for (int i = 0; i < 10; i++) {
es2.submit(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行任务");
}
});
}
ExecutorService es3 = Executors.newCachedThreadPool();
for (int i = 0; i < 20; i++) {
es3.submit(new Runnable() {
@Override
public void run() {
System.out.println(Thread.currentThread().getName() + "正在执行任务");
}
});
}
ScheduledExecutorService es4 = Executors.newScheduledThreadPool(2);
System.out.println("时间:" + System.currentTimeMillis());
for (int i = 0; i < 5; i++) {
es4.schedule(new Runnable() {
@Override
public void run() {
System.out.println("时间:" + System.currentTimeMillis() + "--" + Thread.currentThread().getName() + "正在执行任务");
}
}, 3, TimeUnit.SECONDS);
}
ScheduledExecutorService es5 = Executors.newSingleThreadScheduledExecutor();
System.out.println("时间:" + System.currentTimeMillis());
for (int i = 0; i < 5; i++) {
es5.schedule(new Runnable() {
@Override
public void run() {
System.out.println("时间:" + System.currentTimeMillis() + "--" + Thread.currentThread().getName() + "正在执行任务");
}
}, 3, TimeUnit.SECONDS);
}
}
}
5.通过匿名内部类创建多线程
package com.mystudy.test;
public class ThreadTest {
public static void main(String[] args) {
new Thread() {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("aaaaaaaaa");
}
}
}.start();
new Thread(new Runnable() {
public void run() {
for (int i = 0; i < 10; i++) {
System.out.println("bbbbbbbbb");
}
}
}).start();
}
}