由注册表引起的 I/O 操作发生了不可恢复的错误。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了由注册表引起的 I/O 操作发生了不可恢复的错误。相关的知识,希望对你有一定的参考价值。

2003系统的事件查看器中有可多"由注册表引起的 I/O 操作发生了不可恢复的错误。 注册表将不能读取、写出或刷新包含注册表系统图像的其中一个文件"。然后系统隔二三天就会自动死机,然后必须强制重启服务器才行,过几天就又会出现这个问题

参考技术A 是服务器吧……WIN2003的?1,微软官方对ID333事件给出了解决方案补丁support.microsoft.com/kb/9700542,请问您的服务器上是否安装了Symantec
AntiVirus这个软件,如果最近安装有其他的第三方软件的话,请暂时卸载该软件,查看问题是否依然存在。3,此问题经常由硬盘坏道引起请您进入故障恢复控制器台,使用chkdsk命令查找文件系统和文件系统元数据中的错误,并显示查找结果的状态报告。a.

Windows
server
2003的
光盘插入
CD-ROM
驱动器,然后重新启动计算机。b.
出现“欢迎使用安装程序”屏幕时,按
R
键启动故障恢复控制台。c.
输入管理员帐号和密码,在命令提示符下输入:chkdsk
/p
/r
回车。d.
重启计算机,查看问题是否依然存在。 4.
建议您尝试一次Clean
Boot:a.
运行MSCONFIGb.
在常规下选择选择性启动c.
然后清除Process
System.ini
File,
Process
Win.ini
File和Load
Startup
Items
的复选框,但是保留使用原始Boot.ini。d.
在服务下,先点隐藏所有windows
服务,然后选择
disable
all.e.
然后重新启动。观察问题是否依旧发生。

I/O 阻塞 中断的注意点

---恢复内容开始---

shutdownNow() 方法:

  将向所有由ExecutorService 启动的任务发送 interrupt().进行阻断.

  但是只有任务进入到一个 (可中断的) 阻塞操作时,

  这个中断才会抛出 InterruptedExceptoin 异常.

 

需要注意的是:

[ I/O ] 和 [ synchronized 块上的等待 ] 是不可以中断的,只有通过关闭底层资源进行中断

所以在 创建I/O 任务的时候, 这意味着 I/O 具有锁住你的多线程程序的现在可能,

特别是对于基于 Web的程序.  但是nio 类的 I/O 是会自动响应中断的.

 

 

import java.sql.Time;
import java.util.*;
import java.util.concurrent.*;

class ioTest implements Runnable{
	int i =0;
	@Override
	public void run() {
		try {
			System.out.println("I can‘t be caught");
			TimeUnit.SECONDS.sleep(1);
		}catch(InterruptedException e) {
			System.out.println("Caught " + e );
		}
	}
}

public class Restaurant{
	public static void main(String[] args) throws Exception {
		ExecutorService executorService = Executors.newCachedThreadPool();
		executorService.execute(new ioTest());//执行任务
		executorService.shutdownNow();
	}
}

  输出:

  1. I can‘t be caught
  2. Exit while
  3. Caught java.lang.InterruptedException: sleep interrupted

但是如果把TimeUnit.SECONDS.sleep() 放到最前面

import java.sql.Time;
import java.util.*;
import java.util.concurrent.*;

class ioTest implements Runnable{
	int i =0;
	@Override
	public void run() {
		try {
			TimeUnit.SECONDS.sleep(1);
			System.out.println("I can‘t be caught");
		}catch(InterruptedException e) {
			System.out.println("Caught " + e );
		}
	}
}

public class Restaurant{
	public static void main(String[] args) throws Exception {
		ExecutorService executorService = Executors.newCachedThreadPool();
		executorService.execute(new ioTest());//执行任务
		executorService.shutdownNow();
	}
}

 输出:

  1. Caught java.lang.InterruptedException: sleep interrupted

 

可以得出:

  IO无法被阻断,但是TimeUnit.SECONDS.sleep 可以被阻断,并且抛出异常 InterruptedException

  如果要阻断IO 可以使用 System.out.close();

 

以上是关于由注册表引起的 I/O 操作发生了不可恢复的错误。的主要内容,如果未能解决你的问题,请参考以下文章

开机提示:由注册表引起的I/O操作发生了不可恢复的错误!注册表将不能读取、写出或刷新包含注册表系统图像的

由于注册表引起的I/0操作发生不可恢复的错误 如何解决?

SQL2005使用任务,备份提示报错发生不可恢复的I/O错误1(函数不正确)

java中如果在关闭Socket时发生一个I/O错误,则会抛出一个啥异常?

我家电脑开机跳I O error 103

异常处理