并发编程的目的是为了让程序运行的更快。但是会面临很多挑战:上下文切换、死锁、硬件和软件资源限制。
上下文切换。
工具
- 使用Lmbench3可测量上下文切换的时长。
-
如何减少上下文切换
无锁并发编程
- CAS算法
- 使用最少线程
- 协程
死锁
```java private static String lockA = “A”; private static String lockB = “B”;
public static void main(String[] args) { new DeadLockDemo().deadLock(); }
public void deadLock() { Thread threadA = new Thread(()->{ synchronized (lockA){ try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (lockB){ System.out.println(1); } } }); Thread threadB = new Thread(()->{ synchronized (lockB){ synchronized (lockA){ System.out.println(2); } } }); threadA.start(); threadB.start(); } ```
