别人的代码,那过来改改
package com.jdk.api.demo;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
public class LockDemo {
public static void main(String[] args){
/* Thread i2 = new Thread(new RunIt3());
i2.start();
i2.interrupt(); */
Thread i2 = new Thread(new Synn());
i2.start();
i2.interrupt();
}
}
// java.lang.InterruptedException: sleep interrupted
class Synn implements Runnable{
public synchronized void synn_method()
{
try {
Thread.sleep(1000000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
synn_method();
}
}
/**
* lockInterruptibly 与 lock比较区别在于
lockInterruptibly 优先考虑响应中断,而不是响应锁定的普通获取或重入获取
* @author aircoder
*
*/
class RunIt3 implements Runnable{
private static Lock lock = new ReentrantLock();
public void run(){
try{
//---------------------------------a
// lock.lock(); //代码永远不会结束
lock.lockInterruptibly(); //代码永远不会结束 在 i2.interrupt();
int i=0;
System.out.println(Thread.currentThread().getName() + " running");
// TimeUnit.SECONDS.sleep(20);
while(i==0){
}
lock.unlock();
System.out.println(Thread.currentThread().getName() + " finished");
}
catch (Exception e){
e.printStackTrace();
System.out.println(Thread.currentThread().getName() + " interrupted");
}
}
}
分享到:
相关推荐
- 锁住中断(防止中断嵌套,确保当前中断处理的完整性) - 检查并识别中断源 - 处理中断事件,如读取数据、更新计数器等 - 清除中断标志(告诉外设中断已被处理) - 解锁中断(允许其他中断进来) - 恢复现场...
- **中断处理能力**:支持7向量4级中断结构,兼容传统51系列的5向量2级中断结构。 - **通信接口**:具备全双工串行口,支持数据的双向传输。 #### 三、系统组成及工作原理 该电子密码锁系统主要由以下几个部分组成...
然而,实际的Java ReentrantLock类还包含了更多的优化,如条件变量、定时锁等待、锁中断等特性,这些在实现时需要额外考虑。 在提供的测试例子中,我们可以模拟多线程环境,观察自定义可重入锁在并发情况下的行为,...
通常,你需要配置中断控制器,设置中断优先级和中断使能,以及在中断服务程序中正确地锁定和解锁中断,避免中断嵌套带来的混乱。 文件列表中只有一个"中断显示"的文件,这可能包含了一个完整的中断驱动数码管显示的...
### 中断、下半部、锁及进程调度:深入理解Linux内核关键技术 #### 一、中断 ##### 1. 中断与异常 - **中断**:由外部硬件设备产生的信号,不受CPU时钟控制,因此是异步发生的。内核的目标是在确保安全的前提下...
使用锁、信号量或邮箱等同步机制可以确保多中断环境下的数据一致性。 综上所述,理解并熟练运用Keil C中的中断机制对于嵌入式系统的实时性和响应性至关重要。通过学习和实践提供的工程文件,你可以深入了解如何在...
3. 锁定与同步:在多处理器系统中,为了防止多个CPU同时处理同一中断,需要使用锁或其他同步机制来确保数据一致性。 4. 中断处理速度:中断处理应该尽可能快,因为长时间的中断处理会阻塞其他任务,影响系统性能。 ...
首先,VxWorks提供了两种API来管理中断状态,以实现任务和中断服务程序(ISR)之间的互斥: 1. `intLock()`:这个函数会禁用中断,类似于设置中断禁止位EA为0。在调用`intLock()`后,当前任务会继续执行,直到调用`...
可以使用互斥锁或者中断屏蔽机制来确保数据一致性。 8. **中断响应时间**:LPC2104的中断响应时间受到CPU当前状态、中断优先级、软件处理等因素的影响。优化中断处理流程可以缩短响应时间,提升系统实时性。 通过...
本实验旨在验证一个特定的中断行为:即当PLC在执行程序过程中遇到中断禁止指令(DI)时,如果有中断事件发生,则PLC会记住这些中断,并在遇到中断允许指令(EI)之后再执行这些中断。通过设计实验方案并编写相应的...
中断处理时,可能需要锁或其他同步机制来避免数据竞争和死锁问题。 7. 非阻塞中断(NMI)和快速中断(FIQ): 非阻塞中断不等待当前指令执行完毕就能立即响应,常用于处理紧急情况。快速中断则提供了更高效的中断...
在Windows驱动程序开发中,理解和掌握中断请求级别(IRQ)以及自旋锁是至关重要的。本视频教程将深入探讨这两个核心概念,旨在帮助开发者提升驱动程序的性能和稳定性。 首先,我们来了解一下中断请求级别(IRQ)。...
- 保持中断服务程序的简洁性以减少锁中断时间,保障实时性能。 - **流程图**:飞腾1500A/4的中断处理流程图展示了从发生中断到恢复中断的具体步骤。 3. **多核同步与互斥** - **实现方法**:多核系统中需要通过...
4. **中断上下文**:软中断在中断上下文中运行,不允许睡眠或持有锁,因为这可能导致死锁。 在软中断开发实例6-13中,可能包含以下内容: 1. **注册和注销**:如何注册新的软中断处理函数,以及在不再需要时如何...
- 可以并发运行在多个CPU上,需要使用自旋锁保护共享资源。 - 常用于网络和SCSI子系统。 **2. Tasklet** Tasklet是一种基于软中断实现的下半部机制,它可以更加灵活地管理和调度中断相关的任务。 **特点:** - ...
例如,使用互斥锁或队列管理发送和接收的数据。 6. **错误处理**: - 对于可能出现的错误,如溢出错误、帧错误、校验错误等,需要在中断服务函数中进行检查并适当处理。 7. **代码示例**: 在06-串口1-串口2-...
为了确保正确处理,需要使用锁或自旋锁等同步机制来保护共享资源。 5. **中断优先级**:中断优先级的设置决定了哪个中断可以打断另一个中断。高级别的中断可以打断低级别的中断,但低级别的中断无法打断高级别的...
底半部则是进一步延迟的中断处理,用于避免在中断处理过程中持有锁的时间过长,提高系统并发性能。 Linux还引入了中断线分离(IRQ affinity)的概念,允许将中断分配到特定的CPU核心,以优化系统资源的利用和减少...
释放自旋锁并恢复之前的中断状态,最后返回`IRQ_HANDLED`表示中断已被正确处理。 ### 四、总结 通过对这段代码的详细分析,我们可以看到一个典型的网卡中断处理流程。在裸板驱动中实现网卡中断处理时,需要细致地...
2. **同步机制**:为了避免中断处理过程中的数据冲突,可能需要引入锁或其他同步机制,确保在处理一个设备的中断时,其他设备的数据不会被错误地处理。 3. **中断延迟**:由于共享中断可能导致响应时间延长,因此...