「java终止一个打印任务」怎么终止打印任务
本篇文章给大家谈谈java终止一个打印任务,以及怎么终止打印任务对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java中终止程序的执行
- 2、求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的执行。
- 3、”如何让java打印n次后停止“
- 4、java怎么强行终止程序
- 5、用java代码 道怎样停止一个运行的job,我发现没法停掉它.只能把整个进程退出才行.
- 6、java 多线程并发请求数据,只要有一条线程获得数据,则其他线程终止运行,并打印出获得的数据
java中终止程序的执行
方案操作如下:
(1)让程序在一个单独的线程中运行,然后在终止时,可以用线程的终止方法来结束它。
(2)退出Java程序时尽量不要使用java.lang.System的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是希望看到的情况!!!!
要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。
只有在程序非正常退出时,才使用exit方法退出程序
求教高手:java中如何暂停一个线程中的任务,在以后的可以恢复之前任务的执行。
可以用以下几种方法:
interrupt():中断线程
stop():强迫线程停止执行。用 Thread.stop 来终止线程将释放它已经锁定的所有监视器(作为沿堆栈向上传播的未检查 ThreadDeath 异常的一个自然后果)。如果以前受这些监视器保护的任何对象都处于一种不一致的状态,则损坏的对象将对其他线程可见,这有可能导致任意的行为。
yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行。yield()只能使同优先级的线程有执行的机会。----这句是重点
3.书上说yelid()是礼让,是让当前执行线程停下来给别的线程资源, 又说没有任何机制保证会这样。----------没有任何机制保证执行yield()的线程一定会把资源让给其它线程。打个比方:两个人抢东西,A抢到了B没有,再把东西放回去重抢,说不定还是A抢到B没有。没有任何机制保证放回去后B一定能抢到
sleep方法使线程睡眠,但是到一定毫秒数时会自动到cpu中等待
wait方法使线程等待,但是不会自动到cpu中等待,要通过notify或者notifyall方法进行唤醒。
以上是让线程等待的方法,你可以选择适合你程序的方法。
”如何让java打印n次后停止“
这= =
你说的N是可以设置固定值的吧
不然就是死循环了
例如打印10次
for循环里面int i=1,i=n;i++
就可以在你设置的N那个值次后,停止
java怎么强行终止程序
在java程序中,可以使用java.lang.System的exit方法来终止程序的执行,
12345678
public static void main(String[] args) { System.out.println("开始进入程序..."); //do something System.out.println("程序准备退出了!"); System.exit(0); //下面这句话将不会打印出来 System.out.println("程序已经退出了!");}
但是使用exit方法的本质是终止了JVM的运行,如果同时运行了另外一个程序,使用exit方法同样也会使该程序也终止,要避免此种情况可以使用interrupt()来中断退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。
1234567891011121314151617181920212223
public static void main(String[] args) { System.out.println("开始进入程序..."); //do something new Thread(){ public void run() { while (true) { System.out.println("我是另外的线程..."); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); //获取man线程 Thread main = Thread.currentThread(); System.out.println(main.getName()); main.interrupt(); System.out.println("main线程已经退出了,但是不影响其他线程运行!"); }
只有在程序非正常退出时,才使用exit方法退出程序。
用java代码 道怎样停止一个运行的job,我发现没法停掉它.只能把整个进程退出才行.
把job放到一个线程中,用一个成员变量控制线程的运行
public class MyThead implements Runnable{
private boolean flag = false;
public void run() {
//while(){ 反复执行的程序
if(flag) //flag是开关,更改flag状态控制线程是否运行
return;
// }
}
java 多线程并发请求数据,只要有一条线程获得数据,则其他线程终止运行,并打印出获得的数据
这边我写了一个例子,两个线程同时获取随机数,当获取的值为68的时候则停止所有进程。
这是目录结构:MyThreadOne和MyThreadTwo是两个线程,TestMain是主函数,MyThread继承Thread类。
MyThread.java
package com.xsx.test;
public class MyThread extends Thread {
public void stopThread() {}
}
MyThreadOne.java
package com.xsx.test;
import java.util.Random;
public class MyThreadOne extends MyThread{
private boolean isOK = true;
Random random = new Random();//演示
public void stopThread() {
this.isOK = false;
}
@Override
public void run() {
while(isOK) {
int x = random.nextInt(10000);
System.out.println("Thread One: " + x);
if(x == 68) {
TestMain.stopAll();
System.out.println("My Value is " + x);
break;
}
}
//这边你结合自己的逻辑来写,总之,是通过isOK来控制线程的
}
}
MyThreadTwo.java
package com.xsx.test;
import java.util.Random;
public class MyThreadTwo extends MyThread {
private boolean isOK = true;
Random random = new Random();//演示
public void stopThread() {
this.isOK = false;
}
@Override
public void run() {
while(isOK) {
int x = random.nextInt(10000);
System.out.println("Thread Two: " + x);
if(x == 68) {
TestMain.stopAll();
System.out.println("My Value is " + x);
break;
}
}
}
}
TestMain.java
package com.xsx.test;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class TestMain {
public static MapString, MyThread threadPool = new HashMapString, MyThread();//定义一个线程池
/***
* 终止所有线程
*/
public static void stopAll() {
IteratorMyThread threads = threadPool.values().iterator();
while(threads.hasNext()) {
threads.next().stopThread();
}
threadPool.clear();
}
public static void main(String[] args) {
//实例化两个线程获取到随机数为68时就停止进程,并输出
MyThread thread1 = new MyThreadOne();//实例化线程1
MyThread thread2 = new MyThreadTwo();//实例化线程2
threadPool.put("thread1", thread1);//将线程1放入线程池中
threadPool.put("thread2", thread2);//将线程2放入线程池中
thread1.start();//运行
thread2.start();
}
}
项目已经打包上传
关于java终止一个打印任务和怎么终止打印任务的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
发布于:2022-12-16,除非注明,否则均为
原创文章,转载请注明出处。