Java 多线程使用要点分析
什么是多线程
多线程是指程序同时运行多个线程,每个线程执行不同的任务。多线程的使用可以提高程序的效率,加快程序的执行速度。在Java中,通过使用Thread类来创建和管理线程。
多线程的使用要点
1. 创建线程对象
创建线程对象的方法有两种:
- 继承Thread类并重写run方法
- 实现Runnable接口并实现run方法
1.1 继承Thread类并重写run方法
public class MyThread extends Thread {
@Override
public void run() {
// 重写run方法,编写线程执行的代码
}
}
1.2 实现Runnable接口并实现run方法
public class MyRunnable implements Runnable {
@Override
public void run() {
// 实现run方法,编写线程执行的代码
}
}
2. 启动线程
使用start方法启动线程,启动一个线程后,线程就会执行run方法中的代码。
MyThread myThread = new MyThread();
myThread.start();
3. 线程的状态
- NEW:新建状态
- RUNNABLE:运行状态
- BLOCKED:阻塞状态
- WAITING:等待状态
- TIMED_WAITING:计时等待状态
- TERMINATED:终止状态
可以使用getState方法获取线程状态。
Thread.State state = myThread.getState();
4. 线程的优先级
Java提供了10个线程优先级,分别是1-10,默认情况下线程的优先级为5。可以使用setPriority方法设置线程的优先级。
myThread.setPriority(10);
5. 同步代码块
多个线程访问共享数据时,如果不加控制,会出现数据不一致的问题。可以使用同步代码块来控制线程访问共享数据的顺序。同步代码块使用synchronized关键字定义,其中需要指定锁对象。
synchronized (lock) {
// 同步代码块中的代码同一时刻只能被一个线程执行
}
示例
1. 继承Thread类创建线程
public class MyThread extends Thread {
private int count = 0;
@Override
public void run() {
while (true) {
count++;
System.out.println(Thread.currentThread().getName() + " count:" + count);
}
}
}
public class TestThread {
public static void main(String[] args) {
MyThread t1 = new MyThread();
MyThread t2 = new MyThread();
t1.start();
t2.start();
}
}
运行以上代码,会发现两个线程同时执行,count的值在不断增加。
2. 实现Runnable接口创建线程
public class MyRunnable implements Runnable {
private int count = 0;
@Override
public void run() {
while (true) {
count++;
System.out.println(Thread.currentThread().getName() + " count:" + count);
}
}
}
public class TestThread {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread t1 = new Thread(myRunnable);
Thread t2 = new Thread(myRunnable);
t1.start();
t2.start();
}
}
与第一个示例功能相同,只是使用了不同的创建线程的方法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 多线程使用要点分析 - Python技术站