线程程序的执行主要涉及以下步骤:
创建线程对象
可以通过继承`Thread`类或实现`Runnable`接口来创建线程对象。
示例代码:
```java
// 继承Thread类
class MyThread extends Thread {
@Override
public void run() {
// 线程执行的业务逻辑
}
}
// 实现Runnable接口
class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的业务逻辑
}
}
```
启动线程
通过调用线程对象的`start()`方法来启动线程。
示例代码:
```java
MyThread myThread = new MyThread();
myThread.start();
```
线程执行
线程启动后,会进入就绪状态,等待操作系统分配CPU时间片。
一旦获得CPU时间片,线程会执行其`run()`方法中的业务逻辑。
示例代码:
```java
public class MyThread extends Thread {
@Override
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println(i);
}
}
}
```
线程同步与数据共享
如果多个线程需要访问共享资源,需要使用同步机制(如`synchronized`关键字或`Lock`对象)来避免数据不一致问题。
示例代码:
```java
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class Counter {
private int count = 0;
private final Lock lock = new ReentrantLock();
public void increment() {
lock.lock();
try {
for (int i = 0; i < 100000; i++) {
count++;
}
} finally {
lock.unlock();
}
}
}
```
线程结束
线程执行完`run()`方法中的任务后,线程会进入终止状态,等待垃圾回收器回收。
总结
线程程序的执行流程包括创建线程对象、启动线程、线程执行、线程同步与数据共享以及线程结束。通过合理地管理线程的创建和调度,可以实现高效的并发编程。