「java中断实例」中断程序实例

博主:adminadmin 2022-11-29 19:50:07 47

本篇文章给大家谈谈java中断实例,以及中断程序实例对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA代码运行中断

换个实现方式。

try {

// 读取图片文件

is = new FileInputStream(srcpath);

/**

* 返回包含所有当前已注册 ImageReader 的 Iterator,这些 ImageReader 声称能够解码指定格式。 参数:formatName - 包含非正式格式名称 . (例如 "jpeg" 或 "tiff")等 。

*/

IteratorImageReader it = ImageIO.getImageReadersByFormatName("jpg");

ImageReader reader = it.next();

// 获取图片流

iis = ImageIO.createImageInputStream(is);

/**

* iis:读取源.true:只向前搜索.将它标记为 ‘只向前搜索’。 此设置意味着包含在输入源中的图像将只按顺序读取,可能允许 reader 避免缓存包含与以前已经读取的图像关联的数据的那些输入部分。

*/

reader.setInput(iis, true);

/**

* p

* 描述如何对流进行解码的类

* p

* .用于指定如何在输入时从 Java Image I/O 框架的上下文中的流转换一幅图像或一组图像。用于特定图像格式的插件 将从其 ImageReader 实现的 getDefaultReadParam 方法中返回 ImageReadParam 的实例。

*/

ImageReadParam param = reader.getDefaultReadParam();

/**

* 图片裁剪区域。Rectangle 指定了坐标空间中的一个区域,通过 Rectangle 对象 的左上顶点的坐标(x,y)、宽度和高度可以定义这个区域。

*/

Rectangle rect = new Rectangle(x, y, width, height);

// 提供一个 BufferedImage,将其用作解码像素数据的目标。

param.setSourceRegion(rect);

/**

* 使用所提供的 ImageReadParam 读取通过索引 imageIndex 指定的对象,并将 它作为一个完整的 BufferedImage 返回。

*/

BufferedImage bi = reader.read(0, param);

// 保存新图片

ImageIO.write(bi, "jpg", new File(subpath));

}catch(Exception e){

e.printStackTrace();

}

finally {

if (is != null)

is.close();

if (iis != null)

iis.close();

}

Java中如何中断线程

1: 给你的线程类一个标识符,然后在循环中对这个标志做判断,如果为false则跳出循环,自动结束线程(线程在run()里面执行完就自动关闭了),而你可以再线程外对这个标识符做控制。2: 对线程对象调用interrupt(),这样在run中使用sleep,wait等方法时自动抛出一个InterruptedException异常,在catch里面可以跳出循环。

java中断线程问题

该interrupt的详细介绍如下,对于你这个例子的情况,即下文所说的第2种情况,中断状态清除,sleep函数抛出InterruptedException。所以说这个并不真是让run函数直接“终止”,而是干一些事情试图让它提前结束(比如终止其各种等待的动作,不过只能终止其第一次等待)。而如果run函数里面没有任何等待的动作,那么调用interrupt只是设置了一个中断状态而已,run函数该干什么还是会干什么(总不能说我在排序,你让我快点结束排序,我就能排快点吧……)

如果当前线程没有中断它自己(这在任何情况下都是允许的),则该线程的 checkAccess

方法就会被调用,这可能抛出 SecurityException。

如果线程在调用 Object 类的 wait()、wait(long) 或 wait(long,

int) 方法,或者该类的 join()、join(long)、join(long,

int)、sleep(long) 或 sleep(long,

int) 方法过程中受阻,则其中断状态将被清除,它还将收到一个 InterruptedException。

如果该线程在可中断的通道上的

I/O 操作中受阻,则该通道将被关闭,该线程的中断状态将被设置并且该线程将收到一个 ClosedByInterruptException。

如果该线程在一个 Selector

中受阻,则该线程的中断状态将被设置,它将立即从选择操作返回,并可能带有一个非零值,就好像调用了选择器的 wakeup

方法一样。

如果以前的条件都没有保存,则该线程的中断状态将被设置。

抛出:

SecurityException -

如果当前线程无法修改该线程

Java如何中断一个正在运行的线程

程序是很简易的。然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的、难以发现的错误。 在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程。 背景中断(Interrupt)一个线程意味着在该线程完成任务之前停止其正在进行的一切,有效地中止其当前的操作。线程是死亡、还是等待新的任务或是继续运行至下一步,就取决于这个程序。虽然初次看来它可能显得简单,但是,你必须进行一些预警以实现期望的结果。你最好还是牢记以下的几点告诫。 首先,忘掉Thread.stop方法。虽然它确实停止了一个正在运行的线程,然而,这种方法是不安全也是不受提倡的,这意味着,在未来的JAVA版本中,它将不复存在。 一些轻率的家伙可能被另一种方法Thread.interrupt所迷惑。尽管,其名称似乎在暗示着什么,然而,这种方法并不会中断一个正在运行的线程(待会将进一步说明),正如Listing A中描述的那样。它创建了一个线程,并且试图使用Thread.interrupt方法停止该线程。 Thread.sleep()方法的调用,为线程的初始化和中止提供了充裕的时间。线程本身并不参与任何有用的操作。

Java中如何实现线程的超时中断

如果你是要在子线程超时后直接关闭的话可以这样:

exec=Executors.newFixedThreadPool(1);

CallableString call = new CallableString() {

public String call() throws Exception {

//开始操作

//TimeTaskTest.star(null);

return "线程执行完成";

}

};

FutureString future = exec.submit(call);

//设置为30分钟超时

future.get(1000*60*time , TimeUnit.MILLISECONDS);

=========================================

如果你是在进行其他操作的话那就比较麻烦了,目前我想到的是在子线程中一直访问某个变量,超时时守护线程改变这个值,然后子线程读到后退出,不过这个有个问题,就是当子线程卡死在某个环节时完全无用

java中断实例的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于中断程序实例、java中断实例的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。