在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