在Java中,创建线程可以通过以下几种方式实现:
1. 继承Thread类
通过创建一个新的类继承 java.lang.Thread 类,并覆盖其**run()**方法来定义线程执行的操作。
创建并启动线程的代码如下:
1 2 3 4 5 6 7 8
| public class MyThread extends Thread { @Override public void run() { } } MyThread myThread = new MyThread(); myThread.start();
|
2. 实现Runnable接口
创建一个类实现java.lang.Runnable接口,并实现其**run()**方法。
然后可以将Runnable实例传递给Thread类的构造器。创建并启动线程的代码如下:
1 2 3 4 5 6 7 8 9
| public class MyRunnable implements Runnable { @Override public void run() { } } MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable); thread.start();
|
3. 实现Callable接口
与Runnable类似,但Callable允许任务返回值,并且可以抛出异常。Callable任务需要借助FutureTask包装器来启动线程。
创建并启动线程的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| import java.util.concurrent.Callable; import java.util.concurrent.FutureTask; public class MyCallable implements Callable<Integer> { @Override public Integer call() throws Exception { return 123; } } MyCallable myCallable = new MyCallable(); FutureTask<Integer> futureTask = new FutureTask<>(myCallable); Thread thread = new Thread(futureTask); thread.start();
Integer result = futureTask.get();
|
4. 使用Executor框架
Java通过java.util.concurrent包提供了一个更高级的线程池接口,允许你创建线程池来管理线程的创建和销毁。
创建并使用线程池的代码如下:
1 2 3 4 5 6 7
| import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; ExecutorService executor = Executors.newFixedThreadPool(10);
executor.execute(new MyRunnable()); executor.shutdown();
|