- 浏览: 84996 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (61)
- mysql数据库 浮点型数据查询 插入 (2)
- linux系统相关 (3)
- nginx (3)
- mysql 数据库查询 (2)
- java (13)
- 框架搭建 (0)
- jsp 页面传值总结 (2)
- bug解决 (4)
- js (2)
- ajax (2)
- 远程接口调用 (1)
- 页面美化 (4)
- spring (2)
- jquery validate (2)
- struts2 url 规范 (1)
- Log4j配置 (1)
- 数据结构 (1)
- 数据结构--算法 (1)
- 规划 (1)
- JSON传输,刷新 (1)
- java 中文乱码 (2)
- highcharts (0)
- get两次请求 相同的执行语句并行执行两次 而不是依次各执行一次 (1)
- 数据库配置文件异常处理 (1)
- spring MVC学习笔记 (1)
- 软交换与SIP实用技术 (0)
- socket (0)
- 数据库 (0)
- google map 多标记和信息显示 (1)
- 富客户端 (0)
- mysql 存储程序 (0)
- java 性能处理 (12)
- 并发 (12)
- 通信性能 (0)
- mina (0)
- 多线程 (11)
- postgreSql (1)
- 集群 (1)
- java 7 tutorial 文档翻译 (13)
- Basic I/O (0)
- Java Paltform Learning Path (0)
- 基础巩固 Building On the Foundation (0)
- Fervor Over Server 热衷服务器 (0)
最新评论
-
plumordy:
我也遇到这种问题,get中文参数乱码,在本地和一个服务器上都好 ...
linux下 url中文参数乱码问题 -
纳兰萝卜:
怎么我的编码 然后linux System.out.print ...
linux下 url中文参数乱码问题 -
geyaandy:
我也遇到了同样的问题,用你的方式解决了,但是还是不明白为什么
linux下 url中文参数乱码问题
并发应用程序及时执行的能力被叫做它的活性。这块描述了最普通的活性问题,死锁(deadlock),接着简单描述了两个其他活性问题“饥饿锁和活锁”;
死锁
死锁描述了一种情形,两个或者更多的线程徐翔阻塞。,互相等待对方。这里是一个例子。
Alphonse和Gaston是好朋友,非常看重礼节。礼节的一个严格规定是当你向一个朋友鞠躬的时候,你必须保持鞠躬状态知道你的朋友向你鞠躬。不幸的是,这中规定没有考虑到这种可能性两个朋友同时向对方鞠躬。这个应用例子,死锁,模拟了这种可能。
public class Deadlock {
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public synchronized void bow(Friend bower) {
System.out.format("%s: %s"
+ " has bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
}
public synchronized void bowBack(Friend bower) {
System.out.format("%s: %s"
+ " has bowed back to me!%n",
this.name, bower.getName());
}
}
public static void main(String[] args) {
final Friend alphonse =
new Friend("Alphonse");
final Friend gaston =
new Friend("Gaston");
new Thread(new Runnable() {
public void run() { alphonse.bow(gaston); }
}).start();
new Thread(new Runnable() {
public void run() { gaston.bow(alphonse); }
}).start();
}
}
当死锁运行的时候,它极像两个线程努力调用bowBack时将互相阻塞。阻塞将永远不会结束,因为双方都在等待另一个退出bow。
饥饿和活锁
饥饿和活锁问题比死锁不常见。但是仍然是每个并发应用设计者可能遇到的问题。
饥饿
饥饿描述了这样的一种情形,饥饿描述的是一个线程不能定期的获取对共享资源的访问并且不能前进。当共享资源由于贪婪的线程长期占用而变得不可用就发生了。例如,假设一个对象提供了一个同步方法需要花费很长时间返回。如果一个线程频繁的调用这种方法,其他也需要频繁同步访问这个相同对象的线程就会被阻塞。
活锁(LiveLock)
A线程要以C线程执行后的响应才执行。如果B线程也是以C线程动作的响应才能执行。活锁就可能发生。和死锁一样,活锁的线程不能继续下一步动作。可是了,这些线程没有阻塞,它们只是忙于响应每个线程来重新工作。这就好比两个人在走廊中互相穿过对方:Alphonse 移动到他的左边让Gaston 过,而Gaston 移动到他的右边让Alphonse 过。看见他们仍然互相阻塞对方。Alphonse 移动到他的右边,而Gaston 移动到他的左边,他们仍旧阻塞对方,这样。。。。。
死锁
死锁描述了一种情形,两个或者更多的线程徐翔阻塞。,互相等待对方。这里是一个例子。
Alphonse和Gaston是好朋友,非常看重礼节。礼节的一个严格规定是当你向一个朋友鞠躬的时候,你必须保持鞠躬状态知道你的朋友向你鞠躬。不幸的是,这中规定没有考虑到这种可能性两个朋友同时向对方鞠躬。这个应用例子,死锁,模拟了这种可能。
public class Deadlock {
static class Friend {
private final String name;
public Friend(String name) {
this.name = name;
}
public String getName() {
return this.name;
}
public synchronized void bow(Friend bower) {
System.out.format("%s: %s"
+ " has bowed to me!%n",
this.name, bower.getName());
bower.bowBack(this);
}
public synchronized void bowBack(Friend bower) {
System.out.format("%s: %s"
+ " has bowed back to me!%n",
this.name, bower.getName());
}
}
public static void main(String[] args) {
final Friend alphonse =
new Friend("Alphonse");
final Friend gaston =
new Friend("Gaston");
new Thread(new Runnable() {
public void run() { alphonse.bow(gaston); }
}).start();
new Thread(new Runnable() {
public void run() { gaston.bow(alphonse); }
}).start();
}
}
当死锁运行的时候,它极像两个线程努力调用bowBack时将互相阻塞。阻塞将永远不会结束,因为双方都在等待另一个退出bow。
饥饿和活锁
饥饿和活锁问题比死锁不常见。但是仍然是每个并发应用设计者可能遇到的问题。
饥饿
饥饿描述了这样的一种情形,饥饿描述的是一个线程不能定期的获取对共享资源的访问并且不能前进。当共享资源由于贪婪的线程长期占用而变得不可用就发生了。例如,假设一个对象提供了一个同步方法需要花费很长时间返回。如果一个线程频繁的调用这种方法,其他也需要频繁同步访问这个相同对象的线程就会被阻塞。
活锁(LiveLock)
A线程要以C线程执行后的响应才执行。如果B线程也是以C线程动作的响应才能执行。活锁就可能发生。和死锁一样,活锁的线程不能继续下一步动作。可是了,这些线程没有阻塞,它们只是忙于响应每个线程来重新工作。这就好比两个人在走廊中互相穿过对方:Alphonse 移动到他的左边让Gaston 过,而Gaston 移动到他的右边让Alphonse 过。看见他们仍然互相阻塞对方。Alphonse 移动到他的右边,而Gaston 移动到他的左边,他们仍旧阻塞对方,这样。。。。。
发表评论
-
疑问和练习:并发
2014-06-08 13:48 0问题: 1 你能传一个线程对象给Executor.exec ... -
Concurrent Random Numbers 并发随机数
2014-06-08 01:37 0在jdk7中,Java.util.concurrent包括 ... -
Atomic Variables 原子变量
2014-06-08 01:26 918java.util.concurrent.atmoic包定义了 ... -
Concurrent Collections 并发集合
2014-06-08 00:58 642java.util.concurrent包 包含了大量J ... -
Fork/Join(分开/联合)
2014-06-08 00:59 795Fork/Join框架式ExecutorSe ... -
Thread Pools 线程池
2014-06-08 00:59 673大多数Executor的实现使用线程池,是由工作线程组成。 ... -
Executor Interfaces 执行器接口
2014-06-08 00:59 715java.util.Concurrent包定义了三类执行 ... -
Executors 执行器
2014-06-07 02:56 560在之前的所有例子中,在一个任务被一个新的线程(被定义为Ru ... -
Lock Objects 锁对象
2014-06-07 02:45 821同步代码依赖一种简单的可重入锁。虽然这种锁很容易使用,但 ... -
High Level Concurrency Objects 高级并发对象
2014-06-07 02:21 605至今,课关注低级API,从最开始已经成为java平台的部分 ... -
Immutable Objects 不可变对象
2014-06-07 01:56 551如果一个对象在创建后它的状态不可变那这个对象被认为是不可变 ... -
Guarded Blocks 保护块
2014-06-07 00:53 615线程经常需要协调它们的活动,最常用的协调方法是保护块。这样 ... -
原子访问(Atomic Access)
2014-06-06 22:24 1003在编程中,原子动作是一个突然有效地发生。一个原子动作在中 ... -
内在锁和同步
2014-06-06 21:52 536同步是建立在一个内部的实体上,被称作内在锁或者监视锁。(同步锁 ... -
如何判断方法是否需要同步
2014-03-27 11:01 0如何判断一个方法是否需要同步? 如果一个方法接受传参 根据传值 ... -
多线程中 静态方法与非静态方法class对象与instance区别
2014-03-27 10:35 590class对象 instance对象 两者在 ... -
java nio 开发笔记
2014-03-23 11:23 312java nio 原理 NIO有一个主要的类Selecto ...
相关推荐
### 新型多光谱人脸活性检测方法 #### 摘要与引言 本文提出了一种新型的基于梯度的多光谱人脸活性检测方法,旨在解决当前人脸识别系统容易被照片、模仿面具、人体模型等欺骗的问题。随着3D打印技术的进步,伪造...
### 指纹活性检测技术概述 #### 一、背景 指纹识别技术因其独特性和便捷性,在现代社会得到了广泛应用,从个人设备解锁到企业级的安全准入系统。然而,随着技术的发展,针对指纹识别系统的攻击手段也日益增多。...
livenessProbe: 是指容器是否正在运行。如果存活性探测失败,则kubelete会杀死容器,并且容器受重启策略的影响。如果容器不提供存活性探针,则默认状态为Success。 [root@k8s-master01 k8s-test]# cat liveness.yaml...
Kubernetes提供了一种强大的机制来确保服务的高可用性和稳定性,其中包括活性探测(Liveness Probes)和就绪探测(Readiness Probes)。这些探测帮助系统识别应用实例是否健康,以及是否可以接受新的请求。 Akka-...
7. 活性(Liveness)和安全性(Safety)的一般术语:这两个术语在算法理论领域中分别代表了系统的正向运行(活性)和防止错误发生(安全性)。 8. 关键词:Paxos、异步一致性、故障容忍、复制、Lamport、拜占庭、...
1、restartPolicy, Always, OnFailure, Never 重启容器 2、有两种健康检查, Liveness 活性检查、Readines
活性(Liveness)是指系统的一种性质,其中任何变迁都能够在系统执行到一定阶段时发生。活性确保了系统不会出现所谓的“死变迁”,即由于某些条件永远无法满足而永远不会发生。活性与死锁概念紧密相关,一个具有活性...
首先给出了协议正确性的形式描述以及攻击者的形式定义,将协议的 正确性分为安全性( Safety property)和活性( Liveness property),前者指协议所发现的路由具有某些 良好的性质,后者指协议能够发现路由而且能够顺利地...
4. **安全性和活性证明**:并发算法的正确性通常涉及到两个关键属性:安全性(Safety)和活性(Liveness)。安全性确保在任何情况下,系统都遵循其规定的规则;而活性则保证系统在合理的时间内能够达到某种预期的...
在LTL中,两个关键概念是安全性(Safety)和活性(Liveness)。安全性关注的是“坏事情永远不会发生”,例如,程序不会违反某个断言。一个反例是一段有限的执行路径,导致了某种不良事件的发生。而活性则关注“好...
活性(Liveness)是多线程系统中的一个重要概念,与死锁、饥饿和活锁等问题相对应。活性问题通常发生在线程等待某个事件或资源时,如果线程无限期地等待下去而无法继续执行,就会出现活性问题。为了解决这类问题,...
1. **活性(Liveness)** Jive编程思想首要强调的是软件的活性,这意味着程序应该能够响应环境变化,自我更新并保持运行状态。开发者需要构建能够自我修复、自我优化的系统,以适应不断变化的需求和环境。 2. **...
##### 3.7 备注:活性与无死锁性的对比(Liveness versus Deadlock-Freeness) 活性关注的是所有变迁的可能性,而无死锁性则更侧重于避免系统进入无法继续的状态。这两者之间存在一定的区别,但在实际应用中往往...
5. **安全性与活锁**:Petri网的一个关键分析是安全性(Safety)和活性(Liveness)属性的检查。安全状态是指系统不会无限地消耗资源,而活性则确保系统总能继续前进,不会陷入死锁。 6. **应用**:Petri网在软件...
这将添加 2 个GET端点/api/health/liveness和/api/health/readiness ,它们将返回200 OK响应。 该模块使用overload-protection来识别进程何时可能过载,如果服务负载过重,将返回HTTP 503 Service Unavailable 。 ...
算法设计方面,PBFT在安全性(safety)和活性(liveness)两方面均有所考虑。活性确保了系统在出现错误时仍然能够处理请求并给出响应,而安全性则保证了系统的响应是根据线性化准则(linearizability)来定义的,即...
- **系统属性**:除了上述机制外,CSP还强调了系统属性的重要性,特别是安全性(Safety)和活性(Liveness)。安全性确保系统不会进入某种不安全的状态,而活性则确保系统能够持续进行有意义的活动。CSP通过形式化...
这将添加2个GET端点/api/health/liveness和/api/health/readiness ,它们将返回200 OK响应。 此模块使用overload-protection来标识进程何时可能重载,如果服务负载过重,它将返回HTTP 503 Service Unavailable 。 ...
本文主要探讨PBFT算法的正确性证明,包括安全性(Safety)和活性(Liveness)两个方面,以及算法的优化策略。 1. **安全性证明**:安全性是PBFT算法的核心特性,确保系统在正常情况下不会出现冲突或不一致的结果。...