JAVA多线程(三)模式-Single Threaded Execution
2016-09-21 16:03
453 查看
Single Threaded Executio
同时只允许一个线程使用资源。多线程共享一个资源,仅允许获得了资源锁的线程对资源的访问,避免多线程访问资源造成冲突。
适用环境
多线程争用资源,资源状态(这里的状态指资源对象的属性)可被占用线程变更,需要确保各个线程所见资源状态正确的场景。
样例
抢椅子:幼儿园老师组织3个小朋友抢椅子,规则是一次只能有一个人占据椅子,椅子被占后,老师公布结果,当前占有的小朋友离开,重新开始抢占。独占资源:椅子,老师。
线程:3个小朋友。
老师类
package SingleThreadedExecution; public class Teacher { public void chairHolded(String owner){ if(owner!=null){ System.out.println(owner+"抢到了椅子!"); } } public static void main(String[] args) { Teacher t=new Teacher(); IChair chair=new Chair(t);//单线程运行模式,抢椅子。 Child c1=new Child(chair,"c1"); Child c2=new Child(chair,"c2"); Child c3=new Child(chair,"c3"); Thread t1=new Thread(c1); Thread t2=new Thread(c2); Thread t3=new Thread(c3); t1.start(); t2.start(); t3.start(); } }
小朋友类
package SingleThreadedExecution; public class Child implements Runnable { private IChair chair=null; private String myName=null; private int cnt=0; public Child(IChair chair,String myName){ this.chair=chair; this.myName=myName; } @Override public void run() { while(true){ boolean isSuccess=chair.setOwner(this.myName); if(isSuccess){ cnt++; } try { Thread.sleep(1); } catch (InterruptedException e) { System.out.println("Interrupted!"); } } } }
椅子接口
package SingleThreadedExecution; public interface IChair { public boolean setOwner(String newOne); }
椅子类
package SingleThreadedExecution; public class Chair implements IChair{ private Teacher observer=null; private String owner; public Chair(Teacher observer){ this.observer=observer; } public synchronized boolean setOwner(String newOne){ this.owner=newOne; observer.chairHolded(this.owner); return true; } }
相关文章推荐
- JAVA并发设计模式学习笔记(二)—— Single Threaded Execution Pattern
- 多线程模式之-single Threaded Execution Pattern
- 多线程学习之一独木桥模式Single Threaded Execution Pattern
- Java中的线程(八)- Single Threaded Execution模式
- 多线程程序设计学习(2)之single threaded execution pattern
- 多线程学习系列 - 1 - Single Threaded Execution Pattern
- Concurrent Programming in Java - Single Threaded Execution
- java多线程之Single Threaded Execution模式
- 10 Java 多线程编程环境中单例模式的实现
- 模式1--SingleThreadExecution
- Java多线程编程环境中单例模式的实现
- Java基础之多线程(一)--概述、同步、死锁、单例模式
- java 中多线程下的单例模式
- java 单例模式剖析(涉及同步,Junit,log4j,反射,类载入器,多线程,序列化)
- Java多线程技术初识——6. 单例模式在多线程中应用
- java多线程单例模式
- Java多线程编程环境中单例模式的实现
- Java 多线程下的单例模式
- Java 多线程下的单例模式
- Java多线程编程环境中单例模式的实现