Java中的多线程函数:线程的创建和管理方法以及锁定和同步机制的实现
发布时间:2023-05-30 12:27:06
在Java中,实现多线程的方式有两种:继承Thread类和实现Runnable接口。继承Thread类需要重写run()方法,该方法中写入线程要执行的代码;实现Runnable接口则需要实现run()方法。使用实现Runnable接口的方式可以避免Java中单继承的限制,在一些代码框架中也更为常见。
线程的创建方法:
1. 继承Thread类,重写run()方法
public class MyThread extends Thread {
@Override
public void run() {
// 线程执行的代码
}
}
2. 实现Runnable接口,实现run()方法
public class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行的代码
}
}
创建线程对象的方法:
1. 创建Thread对象,传入重写了run()方法的线程类实例
Thread thread = new MyThread();
2. 创建Thread对象,传入实现了Runnable接口的线程类实例
MyRunnable myRunnable = new MyRunnable(); Thread thread = new Thread(myRunnable);
启动线程:
thread.start();
线程的管理方法:
1. Thread.sleep():暂停当前线程的执行
try {
Thread.sleep(1000); // 暂停1秒
} catch (InterruptedException e) {
e.printStackTrace();
}
2. Thread.join():等待其他线程执行完毕
Thread thread1 = new Thread1();
Thread thread2 = new Thread2();
thread1.start();
thread2.start();
try {
thread1.join(); // 等待thread1执行完毕
thread2.join(); // 等待thread2执行完毕
} catch (InterruptedException e) {
e.printStackTrace();
}
锁定和同步机制的实现:
Java中的synchronized关键字可以保证多个线程访问共享资源时的线程安全。synchronized可以用来修饰方法或代码块,用法如下:
1. 修饰方法:同步整个方法
public synchronized void add(int value) {
// 线程安全的代码
}
2. 修饰代码块:同步指定的代码块
public void add(int value) {
synchronized (lockObj) {
// 线程安全的代码
}
}
在使用synchronized关键字时要注意以下几点:
1. synchronized只能保护共享的数据,对于非共享的数据,不建议使用synchronized关键字
2. synchronized对性能有影响,因为synchronized会让代码串行执行
3. 在使用synchronized时要注意死锁问题,即两个或多个线程循环等待对方释放锁的情况
