在Java中,线程的创建有两种方式:
1. 继承Thread类,重写run方法,调用start方法启动线程 2. 实现Runnable接口,重写run方法,使用Thread类的构造方法创建线程
示例代码如下:
1. 继承Thread类:
public class MyThread extends Thread {
@Override
public void run() {
// 线程执行代码
}
}
public class Main {
public static void main(String[] args) {
MyThread t = new MyThread();
t.start();
}
}
2. 实现Runnable接口:
public class MyRunnable implements Runnable {
@Override
public void run() {
// 线程执行代码
}
}
public class Main {
public static void main(String[] args) {
MyRunnable r = new MyRunnable();
Thread t = new Thread(r);
t.start();
}
}
线程安全是指多个线程同时访问同一个资源时,不会出现数据不一致或者数据污染的情况。
Java中常用的线程安全的方式有:
1. synchronized关键字 2. Lock接口
synchronized关键字可以修饰方法或代码块,保证在同一时间只有一个线程可以进入该方法或代码块。
示例代码如下:
public class MyThread {
private int count;
public synchronized void add() {
count++;
}
}
Lock接口是Java提供的一种高级锁机制,相比synchronized关键字,Lock接口提供了更为灵活的锁定方式。
示例代码如下:
public class MyThread {
private int count;
private Lock lock = new ReentrantLock();
public void add() {
lock.lock();
try {
count++;
} finally {
lock.unlock();
}
}
}
ConcurrentHashMap是Java提供的一种高效的线程安全的哈希表实现。
示例代码如下:
Mapmap = new ConcurrentHashMap<>();
CopyOnWriteArrayList是Java提供的一种高效的线程安全的动态数组实现。
示例代码如下:
Listlist = new CopyOnWriteArrayList<>();
本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com
