[JAVA100例]066、线程控制

/**
* <p>Title: 线程控制</p>
* <p>Description: 实现对线程的控制,中断、挂起、恢复、停止</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: threadCtrl.java</p>
* @version 1.0
*/
public class threadCtrl{
 public static void main(String [] main){
   new threadCtrl();
 }
/**
*<br>方法说明:构造器,控制其它线程
*<br>输入参数:
*<br>返回类型:
*/
 threadCtrl(){
  try{
   Thread tm = Thread.currentThread();
   threadchild td = new threadchild();
   td.start();
   tm.sleep(500);
   System.out.println("interrupt child thread");
   td.interrupt();

System.out.println("let child thread wait!");
   //td.wait();
   //td.suspend();
   tm.sleep(1000);

System.out.println("let child thread working");
   td.fauxresume();
   //td.resume();
   tm.sleep(1000);
   td.runflag = false;
   System.out.println("main over..............");
  }catch(InterruptedException ie){
   System.out.println("inter main::"+ie);
  }catch(Exception e){
   System.out.println("main::"+e);
  }
 }

}
/**
*<br>类说明:被控线程类
*/
 class threadchild extends Thread {
  boolean runflag = true;
  boolean suspended = true;
  threadchild(){
  }
  public synchronized void fauxresume(){
   suspended = false;
   notify();
  }
  public void run(){
   while(runflag){
    System.out.println("I am working..............");
    try{
     sleep(1000);
    }catch(InterruptedException e){
     System.out.println("sleep::"+e);
    }
    synchronized(this){
    try{
     if(suspended)
      wait();
    }catch(InterruptedException e){
     System.out.println("wait::"+e);
    }
    }
   }
   System.out.println("thread over...........");
  }
 }

时间: 2024-09-23 02:08:43

[JAVA100例]066、线程控制的相关文章

[JAVA100例]027、控制波形图

import java.awt.*; import javax.swing.*; public class Func extends JFrame{ /** *<br>方法说明:主方法 *<br>输入参数: *<br>返回类型: */ public static void main(String[] args){ Func db = new Func(); db.update(); } /** *<br>方法说明:构造器,显示窗体 *<br>输入

JAVA100例专题

[JAVA100例]041.执行系统命令 [JAVA100例]078.播放声音 [JAVA100例]077.应用JAR包 [JAVA100例]076.在Applet中使用Swing [JAVA100例]075.检测键盘事件 [JAVA100例]074.检测鼠标事件 [JAVA100例]073.传递参数 [JAVA100例]072.欢迎进入Applet世界 [JAVA100例]071.使用JDOM操作XML [JAVA100例]070.使用JDOM解析XML [JAVA100例]069.使用SAX

[JAVA100例]041、执行系统命令

import java.io.*; /** * <p>Title: 运行系统命令</p> * <p>Description:运行一个系统的命令,演示使用Runtime类.</p> * <p>Copyright: Copyright (c) 2003</p> * <p>Filename: CmdExec.java</p> * @version 1.0 */ public class CmdExec { /** *

spring-一个关于单例和线程的问题

问题描述 一个关于单例和线程的问题 Spring的bean 默认是单例的也就是说每次请求获取的bean都是同一个 验证hashCode也确实是相等的. @Autowired private TestBean testBean; @RequestMapping(""test1.html"") public @ResponseBody String test1() throws InterruptedException { testBean.test(); return

c#如何通过子线程控制主线程控件呢?

问题描述 c#如何通过子线程控制主线程控件呢? 我主窗口有个webbrowser控件,想通过子线程点击已显示出来的网页实现填写的功能,要怎么实现呢?我直接写代码会出错: 求大神贴点代码! 我用主线程弄个按钮是可以点击的,就是子线程不行 错误信息: "System.InvalidCastException"类型的未经处理的异常在 System.Windows.Forms.dll 中发生 其他信息: 指定的转换无效. 线程代码 HtmlElement ht = webBrowser1.Do

软件-java 线程控制进度条 暂停继续

问题描述 java 线程控制进度条 暂停继续 用java实现从网上下载的进度条,想要添加按钮控制进度条比如说点击暂停,软件暂停下载,点击继续后继续下载,要怎么实现这样的功能 解决方案 1.通过http,制定Range头的文件获取字节范围.2.本机通过获取内容用RandomAccessFile 存储. 解决方案二: 首先你的服务器要支持分块下载.或者说断点续传.这样实现你说的功能就很简单了.暂停无非就是下载完当前正在下载的块或者丢弃当前下载的块.继续就是寻找没有下载的块,然后接着下载.

子子线程控制winform窗体控线显示无效

问题描述 子子线程控制winform窗体控线显示无效 大家好: 首先有一个线程做图像采集: imgProc_Task = new Thread(new ThreadStart(ImageProcessing)); imgproc_Task.start(); 然后,在 ImageProcessing中没采集一次图像我会调用一个方法刷新一个控件的显示: ShowlblImageCount_Invoke(intReadImageCount.ToString()); 这个方法实现为: public vo

安卓中遇到有关线程控制的问题。

问题描述 安卓中遇到有关线程控制的问题. 我在做一个有关图片批量处理的文件,在按钮监听事件中有个Intent传递数据到onActivityResult中,在这个函数里加了个for循环,里面有调用图片处理的方法,而且这个方法还涉及到跳入另外一个线程,在这个线程还没执行的时候,会不断地回到这个for循环,如何才能控制让线程执行完毕后,再回到for循环. 解决方案 线程执行完,发一个广播或者handler去通知 解决方案二: handler发个消息过去就行,你这样做没必要再开那个线程.

C语言线程控制的程序设计

问题描述 C语言线程控制的程序设计 编写一个程开启3个线程,的ID分别为A.B.C每个线程将自己的ID在线程上打印出来10遍,要求输出结果按照ABC的顺序显示: 如:ABCABC....依次递推 解决方案 用一个互斥锁加三条件变量就好了啊,首先初始化时设置A条件,A执行打印后设置B条件,B执行打印后设置C条件,C执行打印后设置A条件这样循环......... 解决方案二: 这个题目的考察点是如何保护共用数据吧,给数据加好锁就OK了 解决方案三: 用3个互斥,在线程里等待条件成立,然后执行动作 解