两个线程,一个打印1-100的奇数,一个打印1-100的偶数;要求:线程1打印5个之后,线程2开始打印,线程2打印5个之后,线程1再开始打印,以此循环。

package threadtest;public class Test1 {/** 两个线程,一个打印1-100的奇数,一个打印1-100的偶数;要求:线程1打印5个之后,线程2开始打印,线程2打印5个之后,线程1再开始打印,以此循环。*/private static int state = 1;private static int num1 = 1;private static int num2 = 2;public static void main(String[] args) {// TODO Auto-generated method stubfinal Test1 t = new Test1();new Thread(new Runnable(){@Overridepublic void run(){while(num1<100){//两个线程都用t对象作为锁,保证每个交替期间只有一个线程在打印synchronized(t){// 如果state!=1, 说明此时尚未轮到线程1打印, 线程1将调用t的wait()方法, 直到下次被唤醒  if(state!=1){try{t.wait();}catch(InterruptedException e){e.printStackTrace();}}// 当state=1时, 轮到线程1打印5次数字for(int j=0;j<5;j++){System.out.println(num1);num1 +=2;}// 线程1打印完成后, 将state赋值为2, 表示接下来将轮到线程2打印  state = 2;  // notifyAll()方法唤醒在t上wait的线程2, 同时线程1将退出同步代码块, 释放t锁  t.notifyAll();  }}}}).start();new Thread(new Runnable(){@Overridepublic void run(){while(num2<100){synchronized(t){if(state!=2){try{t.wait();}catch(InterruptedException e){e.printStackTrace();}}for(int i=0;i<5;i++){System.out.println(num2);num2 +=2;}state=1;t.notifyAll();}}                }}).start();        }
}

两个线程交替打印。例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2

package threadtest;public class ThreadTest1 extends Thread{/** java多线程问题。两个线程交替打印。例如第一个线程打印1,接着第二个线程打印100,接着第一个线程打印2*/private static int num =0, n = 100;static ThreadTest1 t1, t2;static int i=0;static int x;static String ss = new String();public ThreadTest1(){start();}public void run(){for(x = 0;x<200;x++){synchronized(ss){ss.notify();Print();try{ss.wait();}catch(InterruptedException e){e.printStackTrace();}}}synchronized(ss){ss.notifyAll();}}public void Print(){if(i==0){i++;System.out.println(this.getName()+":"+ ++num);}else{i=(i+1)%2;System.out.println(this.getName()+":" + n++);}}public static void main(String[] args) {// TODO Auto-generated method stubt1 = new ThreadTest1();t2 = new ThreadTest1();}}

java多线程问题,线程交替执行相关推荐

  1. java两个线程交替执行

    比如有一个数,需要两个线程对其交替操作,代码如下 public class ThreadDemo {public static void main(String[] args) {Message me ...

  2. Java多线程02(线程安全、线程同步、等待唤醒机制)

    Java多线程2(线程安全.线程同步.等待唤醒机制.单例设计模式) 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量 ...

  3. Java多线程之线程通信之生产者消费者阻塞队列版

    Java多线程之线程通信之生产者消费者传统版和阻塞队列版 目录 线程通信之生产者消费者传统版 线程通信之生产者消费者阻塞队列版 1. 线程通信之生产者消费者传统版 题目: 一个初始值为零的变量,两个线 ...

  4. Java多线程:线程安全和非线程安全的集合对象

    转载自  Java多线程:线程安全和非线程安全的集合对象 一.概念: 线程安全:就是当多线程访问时,采用了加锁的机制:即当一个线程访问该类的某个数据时,会对这个数据进行保护,其他线程不能对其访问,直到 ...

  5. 初学Java多线程:线程简介

     Java多线程初学者指南系列教程http://developer.51cto.com/art/200911/162925.htm 初学Java多线程:线程简介 2009-06-29 17:49 ...

  6. Java多线程编程:交替打印数字1234和字母abcd

    Java多线程编程:交替打印数字1234和字母abcd 1. 使用synchronized同步锁 2. 使用LockSupport类 2.1 LockSupport介绍 3. 使用AtomicInte ...

  7. Java多线程之线程池配置合理线程数

    Java多线程之线程池配置合理线程数 目录 代码查看公司服务器或阿里云是几核的 合理线程数配置之CPU密集型 合理线程数配置之IO密集型 1. 代码查看公司服务器或阿里云是几核的 要合理配置线程数首先 ...

  8. Java多线程之线程池的手写改造和拒绝策略

    Java多线程之线程池的手写改造和拒绝策略 目录 自定义线程池的使用 四种拒绝策略代码体现 1. 自定义线程池的使用 自定义线程池(拒绝策略默认AbortPolicy) public class My ...

  9. Java多线程之线程池7大参数、底层工作原理、拒绝策略详解

    Java多线程之线程池7大参数详解 目录 企业面试题 线程池7大参数源码 线程池7大参数详解 底层工作原理详解 线程池的4种拒绝策略理论简介 面试的坑:线程池实际中使用哪一个? 1. 企业面试题 蚂蚁 ...

  10. Java多线程之线程池详解

    Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...

最新文章

  1. 判断分辨网站是否伪静态的方法
  2. JS设置cookie、读取cookie、删除cookie
  3. web前端学习总结--JQuery
  4. Thymeleaf相关补充
  5. 选择器Selector
  6. 滴滴宋世君:DS(数据分析师),究竟是做什么的?
  7. Linux 打印可变参数日志
  8. 张志华:机器学习的发展历程及启示
  9. 【渝粤教育】国家开放大学2019年春季 1117机电控制与可编程序控制 参考试题
  10. nyist 488 素数环
  11. 在Linux系统部署docsify工具小记
  12. Kali Linux 1.0 新手折腾笔记(2013.3.21更新)
  13. 微信、QQ可正常使用,但浏览器打不开网页解决办法
  14. 电脑该如何选择(小仙女篇)
  15. google map学习相关
  16. fh admin mysql版本_在用mysql-front的时候遇到显示:程序注册时间到期程序将被限制模式下运行。...
  17. 前端开发实战:实现京东购物平台的静态首页
  18. 数据库被置疑后的解决方法
  19. MYSQL详解(5)-索引(一)
  20. 小程序一个简单的订单界面

热门文章

  1. 年纪轻轻却突然猝死?数据分析告诉你“猝死”离我们到底有多近?
  2. 北美互联网公司“隐藏福利”大盘点:看完我彻底酸了...
  3. 不用下载软件,mac自带丰富快捷键截图Ctrl+shift+4
  4. 大白菜UEFI版制作u盘启动盘使用教程
  5. 三套致富战略-教你成为百万富翁
  6. PHP+MySql获取新添加记录的ID值
  7. 消息称ARM CEO已辞职 与660亿美元卖身NVIDIA失败无关
  8. 网易第二季度营收205亿元 同比增长13%超预期
  9. 投行精英接班后,贵人鸟能否再高飞?
  10. “万物互联”的时代来了!鸿蒙系统OS 2.0重磅发布:“朋友圈”逐渐扩大