Java 中的线程是 Java 虚拟机中的执行线程,它可以让 Java 应用程序并发执行代码。Java 线程是一种轻量级的线程,使用的内存资源相对较少,同时它可以通过使用多线程提高程序的并发性能,提高程序的执行效率。
创建线程的两种方式:
1. 继承 Thread 类并重写 run() 方法;
示例代码:
public class MyThread extends Thread {
@Override
public void run() {
System.out.println("MyThread is running.");
}
}
public class Test {
public static void main(String[] args) {
MyThread thread = new MyThread();
thread.start();
}
}
2. 实现 Runnable 接口,并重写 run() 方法。
示例代码:
public class MyRunnable implements Runnable {
@Override
public void run(){
System.out.println("MyRunnable is running.");
}
}
public class Test {
public static void main(String[] args) {
Thread thread = new Thread(new MyRunnable());
thread.start();
}
}
Java 线程池
Java 线程池是一种用于管理和控制线程的技术,它可以有效地避免线程的创建和销毁带来的性能开销以及频繁地调度线程带来的额外开销。线程池一般由线程池管理器、工作线程队列和工作线程组成,通过管理器对工作线程进行管理。
Java 线程池的使用可以提高性能和可靠性,同时还可以避免线程的卡死或者死锁等问题,提高程序的响应速度和稳定性。
Java 中的线程池通过 Executor 类来实现,内置了许多不同类型的线程池,主要包括 CachedThreadPool、FixedThreadPool、SingleThreadExecutor、ScheduledThreadPool 等等。
示例代码:
public class TestThreadPool {
public static void main(String[] args) {
ExecutorService executorService = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
Runnable worker = new WorkerThread("" + i);
executorService.execute(worker);
}
executorService.shutdown();
while (!executorService.isTerminated()) {
}
System.out.println("Finished all threads");
}
}
以上代码使用了 Executors 类创建了一个 FixedThreadPool,线程池的大小为 5,然后创建了 10 个任务,最后使用了 executorService.shutdown() 得以停止线程池的运行。