Single Threaded Execution: 该模式能保证最多有一个线程执行指定的方法
何时使用: 1. 多线程环境
2. 多线程存在共享的资源
3. 共享的资源是可变的
以上3个条件缺一不可
Single Threaded Execution模式如果同时满足下列几个条件时,就会产生死锁:
1. 每个线程 同时需要1个以上共享资源
2. 每个线程的一个操作在锁定一个资源的时候,还没解除前就去锁定另一个资源
3。每个线程对操作对资源需要的顺序不一样
Main:
public class Main {
public static void main(String[] args) {
System.out.println("Testing EaterThread, hit CTRL+C to exit.");
Tool spoon = new Tool("Spoon");
Tool fork = new Tool("Fork");
new EaterThread("Alice", fork, spoon ).start();
new EaterThread("Bobby", spoon, fork).start();
}
}
Tool:
public class Tool {
private final String name;
public Tool(String name) {
this.name = name;
}
public String toString() {
return "[ " + name + " ]";
}
}
EaterThread:
public class EaterThread extends Thread {
private String name;
private final Tool lefthand;
private final Tool righthand;
public EaterThread(String name, Tool lefthand, Tool righthand) {
this.name = name;
this.lefthand = lefthand;
this.righthand = righthand;
}
public void run() {
while (true) {
eat();
}
}
public void eat() {
synchronized (lefthand) {
System.out.println(name + " takes up " + lefthand + " (left).");
synchronized (righthand) {
System.out.println(name + " takes up " + righthand + " (right).");
System.out.println(name + " is eating now, yam yam!");
System.out.println(name + " puts down " + righthand + " (right).");
}
System.out.println(name + " puts down " + lefthand + " (left).");
}
}
}
分享到:
相关推荐
(注意,本资源附带书中源代码可供参考) 多线程与并发处理是程序设计好坏优劣的重要课题,本书通过浅显易懂的文字与实例来介绍Java线程相关的设计模式概念,并且通过实际的Java程序范例和 UML图示来一一解说,书中...
第1章 Single Threaded Execution——能通过这座桥的,只有一个人 第2章 Immutable——想破坏它也没办法 第3章 Guarded Suspension——要等到我准备好喔 第4章 Balking——不需要的话,就算了吧 第5章 Producer-...
Java多线程模式详解 目录: 一、漫谈UML Java语言的线程 多线程的评量标准 二、 1、Single Threaded Execution ———— 能通过这座桥的,只有一个人 2、Immutable ———— 想破坏它也没办法 3、Guarded ...
多线程入门,多线程基础知识,描述了Synchronized的线程互斥原理,和Single Threaded Execution模式,符合基础入门的用户可以好好学习,加深理解
- 当需要提高多线程环境下的性能时,因为不可变对象可以安全地在多个线程之间共享。 #### 1.4 标记接口(Marker Interface) **使用:** 标记接口是一种特殊的接口类型,它没有任何方法声明。它主要用于表示某种...
- **单线程执行(Single Threaded Execution)** - **定义**: 确保在单一的线程中执行特定的操作。 - **应用场景**: 当需要确保特定操作不会被并发执行时。 - **缓存管理(Cache Management)** - **定义**: 一种用于...