A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭卫红 中级黑马   /  2014-8-28 00:55  /  1253 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class TextThreadYield { // 操作线程让步的类
  2.         private Vector vector = new Vector(); // 创建向量集合
  3.         // 创建日期格式
  4.         private DateFormat dateFormat = new SimpleDateFormat("HH-mm-ss:SSSS");
  5.         private boolean isFlag = false;

  6.         private class Yield extends Thread { // 让步接收文件类
  7.                 public Yield() {
  8.                         this.setName("接收文件"); // 设置线程名称
  9.                         this.setDaemon(true); // 如果SendFile线程结束,则该线程自动结束
  10.                 }

  11.                 public void run() {
  12.                         while (!isFlag) { // 标识为真进行循环
  13.                                 try {
  14.                                         Thread.sleep(100); // 休眠
  15.                                 } catch (InterruptedException e) { // 捕获唤醒异常
  16.                                         System.out.println("唤醒异常:" + e.getMessage());
  17.                                 }
  18.                                 if (vector.size() == 0) { // 判断向量集合大小
  19.                                         System.out.println(dateFormat.format(new Date())
  20.                                                         + "\t向量集合中没有文件,执行yield操作");
  21.                                         Thread.yield(); // 调用线程让步
  22.                                 } else { // 移队文件获得对象
  23.                                         String ss = (String) vector.remove(0);
  24.                                         System.out.println(dateFormat.format(new Date())
  25.                                                         + "\t取到文件,名为" + ss);
  26.                                 }
  27.                         }
  28.                 }
  29.         }

  30.         private class SendFile extends Thread { // 发送文件类
  31.                 private String[] files = new String[] { "新闻文件", "国内旅游向导", "山水名画欣赏",
  32.                                 "发家致富说明" };

  33.                 public SendFile() {
  34.                         this.setName("发送文件");
  35.                 }

  36.                 public void run() {
  37.                         try {
  38.                                 for (int i = 0; i < files.length; i++) { // 循环使线程休眠
  39.                                         Thread.sleep(201); // 线程休眠
  40.                                         vector.add(files[i]); // 添加文件
  41.                                 }
  42.                                 Thread.sleep(100); // 线程休眠
  43.                         } catch (InterruptedException e) { // 捕获唤醒异常
  44.                                 System.out.println("唤醒异常:" + e.getMessage());
  45.                         }
  46.                 }
  47.         }

  48.         public static void main(String[] args) { // java程序主入口处
  49.                 TextThreadYield text = new TextThreadYield();// 实例化对象
  50.                 text.new Yield().start(); // 实例对象启动线程
  51.                 text.new SendFile().start();
  52.         }
  53. }
复制代码

2 个回复

倒序浏览
这个yield() 没什么大用吧 就让一下 下次照样抢
回复 使用道具 举报
很详细   值得看一看
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马