所谓Single Threaded Execution模式,意即“以一个线程执行”。该模式用于设置限制,以确保同一时间内只能让一个线程执行处理。
示例
模拟三个人频繁地通过一个只允许一个人经过的门的情形。当人们通过门的时候,统计人数便会递增。另外,还会记录通行者的“姓名与出生地”。
Main.java
1 | public class Main { |
UserThread.java
1 | public class UserThread extends Thread { |
Gate.java
1 | public class Gate { |
登场角色
SharedResource(共享资源)
Single Threaded Execution模式中出现了一个发挥SharedResource(共享资源)作用的类。在示例中,由Gate类扮演SharedResource角色。
SharedResource角色是可被多个线程访问的类,包含很多方法,但这些方法主要分为如下两类。
- safeMethod:多个线程同时调用也不会发生问题的方法。
- unsafeMethod:多个线程同时调用会发生问题,因此必须加以保护的方法。
Single Threaded Execution模式会保护unsafeMethod,使其同时只能由一个线程访问。Java则是通过将unsafeMethod声明为synchronized方法来进行保护。