废话就不多说了,直接上demo,使用带来来进行了解

public class TaleTeceive implements  Runnable {DatagramSocket datagramSocket = null;private String msgFrom;public TaleTeceive(int formPort,String msgFrom) throws SocketException {this.datagramSocket = new DatagramSocket(formPort);this.msgFrom = msgFrom;}@Overridepublic void run() {try{//准备接收的包裹byte [] bytes = new byte[1024];while (true){DatagramPacket datagramPacket = new DatagramPacket(bytes,0,bytes.length);datagramSocket.receive(datagramPacket);//断开连接byte [] data = datagramPacket.getData();String  date = new String(data,0,data.length);System.out.println(msgFrom+":"+date);if(date.trim().startsWith("bye")){break;}}}catch (Exception e){e.printStackTrace();}finally {if(datagramSocket != null)datagramSocket.close();}}
}
public class TalkSend implements Runnable {DatagramSocket datagramSocket = null;BufferedReader bufferedReader = null ;private int formPort;private String toIP;private int toPort;public TalkSend(int formPort,String toIP,int toPort) throws SocketException {this.datagramSocket =  new DatagramSocket(this.formPort);this.bufferedReader =  new BufferedReader(new InputStreamReader(System.in));this.formPort = formPort;this.toIP = toIP;this.toPort = toPort;}@Overridepublic void run() {try{while (true){String data  = bufferedReader.readLine();byte [] dates = data.getBytes();DatagramPacket datagramPacket =  new DatagramPacket(dates,0,data.length(),new InetSocketAddress(this.toIP,this.toPort));datagramSocket.send(datagramPacket);if(data.toString().startsWith("bye")){break;}}}catch (Exception e){e.printStackTrace();}finally {try {if( bufferedReader != null)bufferedReader.close();} catch (IOException e) {e.printStackTrace();}if(datagramSocket != null)datagramSocket.close();}}
}

接下来就是创建线程了

public class TalkStudent {public static void main(String[] args) throws SocketException {new Thread(new TalkSend(7777,"127.0.0.1",9999)).start();new Thread(new TaleTeceive(8888,"老师")).start();}
}
 public class TalkTeacher {public static void main(String[] args) throws SocketException {new Thread(new TalkSend(5555,"127.0.0.1",8888)).start();new Thread(new TaleTeceive(9999,"学生")).start();}}

Java使用多线程,UPD通过控制台之间互相通讯相关推荐

  1. java多线程有几种实现方法_Java多线程之间实现通讯

    一.课程目标 多线程之间如何通讯 wait.notify.notifyAll()方法 lock 停止线程 守护线程 Join方法 优先级 Yield 二.多线程之间如何实现通讯 2.1 什么是多线程之 ...

  2. 多线程Synchronized锁的使用与线程之间的通讯

    多线程Synchronized锁的使用与线程之间的通讯 一.什么是线程安全问题 二.如何解决线程安全问题 三.synchronized锁的基本用法 1.修饰代码块(this锁) 2.修饰实例方法(th ...

  3. java面试题成都_成都汇智动力-java面试——多线程面试题

    原标题:成都汇智动力-java面试--多线程面试题 1.多线程有什么用?发挥多核CPU的优势 防止阻塞 便于建模 2.创建线程的方式继承Thread类 实现Runnable接口 至于哪个好,不用说肯定 ...

  4. java redis多线程爬取国美商品信息

    前面那篇爬虫文章用的是单线程没有用到其它一些比较提高效率的工具比较遗憾,所以今天做了一个比较全面的爬虫.首先谢谢 @[天不生我万古长](https://www.jianshu.com/u/e34019 ...

  5. Java计算两个字符串日期之间的天数差

    Java计算两个字符串日期之间的天数差 调用方法: public static void main(String[] args) throws ParseException {String a = & ...

  6. Java 并发/多线程教程(四)-并发模型

    本系列译自jakob jenkov的Java并发多线程教程(本章节部分内容参考http://ifeve.com/并发编程模型),个人觉得很有收获.由于个人水平有限,不对之处还望矫正! 并发系统可以有多 ...

  7. java 之 多线程

    1.多线程:概念:1 进程:正在运行的程序2 线程:进程中一个程序执行的控制单元(执行路径).P.S.1.一个进程中可以有多个执行路径,称之为多线程.2.一个进程中至少要有一个线程.3.开启多个线程是 ...

  8. 跟着刚哥梳理java知识点——多线程(十六)

    创建多线程 第一种方式: ① 继承:继承Thread. ② 重写:重写Thread类的run()方法 ③ 创建:创建一个子类的对象 ④ 调用:调用线程的start()方法,启动此线程,调用run()方 ...

  9. Java中多线程访问冲突的解决方式

    Java中多线程访问冲突的解决方式 当时用多线程访问同一个资源时,非常容易出现线程安全的问题,例如当多个线程同时对一个数据进行修改时,会导致某些线程对数据的修改丢失.因此需要采用同步机制来解决这种问题 ...

  10. java并发多线程面试_Java多线程并发面试问答

    java并发多线程面试 Today we will go through Java Multithreading Interview Questions and Answers. We will al ...

最新文章

  1. 个人作业1——四则运算题目生成程序
  2. bug诞生记——隐蔽的指针偏移计算导致的数据错乱
  3. 制定灾难恢复计划时易忽略的九件事
  4. .NET Core微服务系列基础文章索引(目录导航Final版)
  5. java前后端用json传值_前后端——json的传值与接收(springMvc)
  6. websphere配置oracle数据源,websphere70中配置oracle数据源及部署.doc
  7. cass生成曲线要素文件_《CASS道路断面法施工技术》
  8. php soap 两个版本_Ceontos 安装php7以上的版本
  9. 微博开放平台注册应用
  10. C++ 头文件「ctype.h」里的:isalpha、islower、isupper、isalnum等函数
  11. 我的推荐系统学习之路
  12. C++学习笔记:实现向量类的加减赋值运算,重载运算符
  13. win10进入BIOS界面的方法
  14. 【Java】- Incompatible types. Found: java. lang. String', required:' byte, char, short or int'
  15. Apache虚拟主机相关配置
  16. 历经艰难,终成大器!改变,永远不迟!
  17. docker推送镜像至阿里私有镜像仓库
  18. WPF开发常用的工具
  19. java计算机毕业设计文献管理平台源码+系统+数据库+lw文档+mybatis+运行部署
  20. ASP.NET MVC和Bootstrap制作一个员工信息表

热门文章

  1. 出版物设计排版工具:Swift Publisher 5 for Mac
  2. vant 表单按钮置灰_Vant Switch 开关
  3. 连续分配管理方式(单一连续分配 固定分区分配 动态分区分配)
  4. JVM 内存分配策略
  5. 服务器双系统怎么选择启动不了,Win7/Win10双系统开机时不显示系统选择菜单怎么办...
  6. (百度贴吧发帖)html5,百度贴吧怎么发帖子
  7. Take Your Seat
  8. 大数据分析的学习感悟
  9. eNSP创建局域网vlan隔离
  10. 《大话数据结构(C实现)》(Yanlz+VR云游戏+Unity+SteamVR+云技术+5G+AI+软件架构设计+框架编程+数据结构+链表+栈+队列+二叉树+冒泡排序+KMP模式+立钻哥哥+==)