1.如何让两个线程依次执行
假设有两个线程,一个线程A,一个线程B,两个线程分别依次打印 1-3 三个数字即可。

package Test;/**
/*** @author Administrator * @createdate 2017-10-10*/
public class demo1 {public static void main(String[] args){Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {printNumber("A");}});Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {printNumber("B");}});thread1.start();thread2.start();}private  static void printNumber(String threadname){int i=0;while (i++ <3){try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(threadname + " print:" +i);}}
}

其中的 printNumber(String) 实现如下,用来依次打印 1, 2, 3 三个数字:通过将线程休眠的方式来控制两个线程一次来执行。
执行的结果如下:可以看到执行的结果是两个线程依次执行。

2.如何让两个线程交叉顺序执行
我现在希望 A 在打印完 1 后,再让 B 打印 1, 2, 3,最后再回到 A 继续打印 2, 3。要如何来执行呢。看如下的代码

package Test;/**
/*** @author Administrator wangtao* @createdate 2017-10-10*/
public class demo2 {public static void main(String[] args){Thread thread1 = new Thread(new Runnable() {@Overridepublic void run() {printNumber("A");}});Thread thread2 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println("B 开始等待 A");try {thread1.join();//我会等待线程1执行完成后再进行执行} catch (InterruptedException e) {e.printStackTrace();}printNumber("B");}});thread1.start();thread2.start();}private  static void printNumber(String threadname){int i=0;while (i++ <3){try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}System.out.println(threadname + " print:" +i);}}
}

利用Thread.join()方法来实现,join()方法的作用是等待调用线程执行完之后再执行任务。看最后的执行结果知道,
B线程是等到A全部执行完成之后才开始执行。

java 线程间通信的几种方式相关推荐

  1. JAVA线程间通信的几种方式

    今天在群里面看到一个很有意思的面试题: "编写两个线程,一个线程打印1~25,另一个线程打印字母A~Z,打印顺序为12A34B56C--5152Z,要求使用线程间的通信." 这是一 ...

  2. Java线程间通信-回调的实现方式

    2019独角兽企业重金招聘Python工程师标准>>> Java线程间通信-回调的实现方式 Java线程间通信是非常复杂的问题的.线程间通信问题本质上是如何将与线程相关的变量或者对象 ...

  3. 线程间通信的几种方式

    Java线程间通信: 1:线程上下文 2:共享内存 3:IPC通信 4:套接字(Socket),不同的机器之间进行通信 另外:附注通信内容: linux常用的进程间的通讯方式 (1).管道(pipe) ...

  4. python 线程通信的几种方式_进程间通信和线程间通信的几种方式

    进程 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体:在当代 ...

  5. java实现线程间通信的四种方式

    synchronized同步 public class MyObject { synchronized public void methodA() { //do something.... } syn ...

  6. 进程间通信和线程间通信的几种方式

    进程和线程的区别: 对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品. 而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数 ...

  7. java线程间通讯的几种方式

    并发编程中,我们可能会遇到这样一个场景 A.B两个线程并行,但是我希望保证B线程在A线程执行完了后再执行 这个时候就需要线程间进行通讯 A执行完了后对B说一声,喂,我执行完了 来康康用Java怎么实现 ...

  8. 线程间通信的两种方式

    1.wait()/notify() Object类中相关的方法有notify和wait方法,又因为它俩被定义在Object类中,故会被所有的类继承.它俩都是final的,不能被重写,不能通过子类重写改 ...

  9. 19、Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition

    Java并发编程:线程间协作的两种方式:wait.notify.notifyAll和Condition 在前面我们将了很多关于同步的问题,然而在现实中,需要线程之间的协作.比如说最经典的生产者-消费者 ...

最新文章

  1. python使用configparser读取ini格式的配置文件
  2. Java学习day010(oop):向上造型
  3. websocketpp 打印发送数据
  4. python花钱培训值吗-python培训需要花多少钱?
  5. LINUX怎么修改IP地址
  6. Android开发之通过ImageView名称从文件夹拿到ImageView的Drawable对象的方法
  7. Win32ASM学习[23]:RadASM快捷键
  8. 从钱龙数据中读取股票权息信息导入到数据库
  9. CCIE-LAB-SDN-第二篇-DNAC中完成VN配置
  10. usermod命令 、用户密码管理、mkpasswd命令
  11. [转载] Python算法
  12. android 自定义流程图,GitHub - zx-Zhu/ProcessChart: 安卓自定义流程进度图控件
  13. 精灵五笔 优化指南【原】
  14. java代码编写九九乘法表
  15. MaxCompute SQL
  16. Jetson Nano安装ROS错误合集
  17. Java 高并发第三阶段实战---Java并发包深入解析与使用详解
  18. 《图解密码技术》笔记2:历史上的密码-写一篇别人看不懂的文章
  19. 【VFI系列2】视频内插帧中基于optical flow的 backward/forward warping
  20. Nico的刷题日记(二)

热门文章

  1. python求1~100的和
  2. PC端抖音HTML布局,从抖音网页版上线、微信PC版可发朋友圈,看互联网「全端化」布局...
  3. html5仿抖音全屏播放,仿抖音视频全屏播放滑动切换
  4. Excel导入数据,时间处理
  5. 阿里巴巴常考面试题目
  6. 处理 Seata分布式事务中 没有传递XID 导致事务失效的问题
  7. 软件系统问题排查的一般流程
  8. PHP优惠卷返利网源码_用PHP做了一个领取优惠券活动的示例代码
  9. c/c++一百道小程序
  10. 【微信小程序-原生开发】实用教程06-轮播图、分类页签 tab 、成员列表(含Tdesign升级,切换调试基础库,设置全局样式,配置组件按需注入,添加图片素材,wx:for,生命周期 onLoad)