zoukankan      html  css  js  c++  java
  • java 两个线程交替打印1-100输出到控制台

    java 两个线程交替打印1-100输出到控制台:
    package com.thread;

    public class TestThread {
    public static void main(String[] args) {
    test();
    }
    static long sum=0l;
    Boolean falg=false;
    public static void test() {
    PrintNum printNum = new PrintNum();
    System.out.println("開始進入th1線程--");
    Thread th1=new Thread(new Runnable() {
    @Override
    public void run() {
    while(true) {
    try {
    printNum.printO();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    // System.out.println("sum:"+sum);
    }}
    });
    th1.start();

    System.out.println("開始進入th2線程--");
    Thread th2=new Thread(new Runnable() {
    @Override
    public void run() {
    while(true) {
    try {
    sum= printNum.printJ();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    if(sum==100) {
    break;
    }
    }
    }});
    th2.start();
    }
    }
    -------------------------------------------------------------------------------------------------------------
    package com.thread;

    public class PrintNum {

    private long num=0l;
    //打印奇数
    public synchronized long printJ() throws InterruptedException {
    //当num 是偶数时 ,线程等待
    while(num % 2==0) {
    try {
    this.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    System.out.println("打印奇数");
    System.out.println(Thread.currentThread().getName()+" :"+ num);
    num++;
    this.notify();
    return num;
    }
    //打印偶数
    public synchronized void printO() throws InterruptedException {
    //当num 是奇数时 ,线程等待
    while(num % 2==1) {
    try {
    this.wait();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    System.out.println("打印偶数");
    System.out.println(Thread.currentThread().getName()+" :"+ num);
    num++;
    this.notify();
    }
    }
  • 相关阅读:
    JS函数机制小结
    面向对象的JS随笔
    web性能优化
    css布局
    Spark内存管理
    Scala中==,eq与equals的区别
    Java中char占用几个字节
    Java中long和double的原子性
    elk-filebeat收集docker容器日志
    Spring Boot多数据源配置(二)MongoDB
  • 原文地址:https://www.cnblogs.com/2016-cxp/p/10934736.html
Copyright © 2011-2022 走看看