1. //多线程通讯
  2. //多个线程处理同一资源,但是任务不同
  3. //等待唤醒方法:
  4. //wait():将线程变成为冻结状态,线程会被存储在线程池中;
  5. //notify():唤醒线程中的一个线程(任意的)
  6. //notifyAll():唤醒所有线程;
  7. /**************************************************************/
  8. //建立资源类
  9. class Resource
  10. {
  11. private boolean flag = false;
  12. private String name;
  13. private String sex;
  14. public synchronized void set(String name,String sex)
  15. {
  16. if(flag)
  17. try
  18. {
  19. this.wait();
  20. }
  21. catch (InterruptedException e)
  22. {
  23. }
  24. this.name = name;
  25. this.sex = sex;
  26. this.flag=true;
  27. this.notify();
  28. }
  29. public synchronized void get()
  30. {
  31. if(!this.flag)
  32. try
  33. {
  34. this.wait();
  35. }
  36. catch (InterruptedException e)
  37. {
  38. }
  39. System.out.println(name+"--"+sex);
  40. this.flag=false;
  41. this.notify();
  42. }
  43. }
  44. //建立输入任务类
  45. class Input implements Runnable
  46. {
  47. Resource r;
  48. Input(Resource r)
  49. {
  50. this.r = r;
  51. }
  52. public void run()
  53. {
  54. int x = 0;
  55. while(true)
  56. {
  57. if (x==0)
  58. {
  59. r.set("野兽","男 ");
  60. }
  61. else
  62. {
  63. r.set("meinv","nv ");
  64. }
  65. x=(x+1)%2;
  66. }
  67. }
  68. }
  69. //建立输出任务类
  70. class Output implements Runnable
  71. {
  72. Resource r;
  73. Output(Resource r)
  74. {
  75. this.r = r;
  76. }
  77. public void run()
  78. {
  79. while(true)
  80. {
  81. synchronized(r)
  82. {
  83. r.get();
  84. }
  85. }
  86.  
  87. }
  88. }
  89.  
  90. class IoDemo1
  91. {
  92. public static void main(String[] args)
  93. {
  94. //建立资源对象
  95. Resource r = new Resource();
  96. //建立输入任务对象
  97. Input in = new Input(r);
  98. //建立输出任务对象
  99. Output out = new Output(r);
  100. //建立输入任务的进程
  101. Thread t1 = new Thread(in);
  102. //建立输出任务的进程
  103. Thread t2 = new Thread(out);
  104. //开启线程
  105. t1.start();
  106. t2.start();
  107. }
  108. }

一个线程间的通讯小程序__(Java_Thread_Inout.Output)的更多相关文章

  1. python实现串口通讯小程序(GUI界面)

    python实现串口通讯小程序(GUI界面) 使用python实现串口通讯需要使用python的pyserial库来实现,这个库在安装python的时候没有自动进行安装,需要自己进行安装. 1.安装p ...

  2. python(三)一个文件读写操作的小程序

    我们要实现一个文件读写操作的小程序 首先我们有一个文件 我们要以"============"为界限,每一个角色分割成一个独立的txt文件,按照分割线走的话是分成 xiaoNa_1. ...

  3. java线程间的通讯

    主要通过wait()和notify()方法进行线程间的通讯 class Product extends Thread{ String name; float price; boolean flag = ...

  4. 一个小时快速搭建微信小程序教程

    「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的 ...

  5. 一个小时快速搭建微信小程序

    「小程序」这个划时代的产品发布快一周了,互联网技术人都在摩拳擦掌,跃跃欲试.可是小程序目前还在内测,首批只发放了 200 个内测资格(泪流满面).本以为没有 AppID 这个月就与小程序无缘了,庆幸的 ...

  6. iOS多线程开发资源抢夺和线程间的通讯问题

    说到多线程就不得不提多线程中的锁机制,多线程操作过程中往往多个线程是并发执行的,同一个资源可能被多个线程同时访问,造成资源抢夺,这个过程中如果没有锁机制往往会造成重大问题.举例来说,每年春节都是一票难 ...

  7. Java---基于TCP协议的相互即时通讯小程序

    这是几年前,新浪的一个面试题~要求是3天之内实现~ 通过TCP 协议,建立一个服务器端. 通过配置服务器端的IP和端口: 客户端之间就可以相互通讯~ 上线了全部在线用户会收到你上线的通知. 下线了全部 ...

  8. 猩球StarBall ,一个方便约球的小程序

    扫描小程序码直接进入小程序 猩球StarBall 是一款为热爱运动的人群提供便利的小程序. 开发技术为Java +Mysql 其中用到的技术框架为SpringBoot,Mybatis,Redis,Qu ...

  9. 用Python快速实现一个垃圾分类APP|附带微信小程序

    最近北京开始实行垃圾分类,导致大家对垃圾的研究热度突然涨高,垃圾们也纷纷表示从来没有获得过这么高的关注度.其实,上海市去年已经开始实行,网上已经有不少成熟的教程了,像什么<垃圾分类从入门到精通& ...

随机推荐

  1. 一天掌握Android JNI本地编程 快速入门

    一.JNI(Java Native Interface)        1.什么是JNI:               JNI(Java Native Interface):java本地开发接口   ...

  2. Spark SQL - DataFrame

    1 Overview Spark SQL is a Spark module for structured data processing. It provides a programming abs ...

  3. 21 Free SEO Tools For Bloggers--reference

    http://dizyne.net/21-free-seo-tools-for-bloggers/ What do you think is important in a website? Yes, ...

  4. 去掉或者修改 input、select 等表单的【默认样式 】

    隐藏input等表单的默认样式的背景: textarea,select,input{-webkit-appearance: none; -moz-appearance: none; -o-appear ...

  5. WPF 之 后台设置Image的Souce

    后台动态设置Image的Souce. 方法一: BitmapImage imgSource = new BitmapImage(new Uri("location",UriKind ...

  6. Inversions

    There are N integers (1<=N<=65537) A1, A2,.. AN (0<=Ai<=10^9). You need to find amount o ...

  7. 1.6.6 De-Duplication(重复数据删除)

    1. 重复数据删除 solr通过<Signature>类的类型来支持重复数据删除技术的.一个Signature可以通过以下几种方式实现:  方法 描述  MD5Signature  128 ...

  8. Java基础知识强化104:Serializable接口 与 Parcelable接口

    1. 什么是 序列化 和 反序列化 ?     序列化 :序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化.可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间.序 ...

  9. android网络请求库volley方法详解

    使用volley进行网络请求:需先将volley包导入androidstudio中 File下的Project Structrue,点加号导包 volley网络请求步骤: 1. 创建请求队列     ...

  10. 关于更新到Xcode8的一些问题

    随着iOS 10的陆续使用,升级到xcode8也是大势所趋. 虽然现在xcode 8 可能还有一些问题,但是整体还是不错的,对一些常用的插件也做了集成,比如说 ///注释快捷键 下面说一下我遇到的一些 ...