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();
    }
    }
  • 相关阅读:
    C#概述
    作为一个程序员小小感悟!!
    c# 合并两个DataTable
    C# FastReport .NET打印
    c# System.Net.Sockets =》TcpListener用法
    开博第一章
    Vue 报错 Uncaught (in promise)
    ASP.NET MVC 中的过滤器
    SpringBoot 打包成war
    SprintBoot 实现上传下载
  • 原文地址:https://www.cnblogs.com/2016-cxp/p/10934736.html
Copyright © 2011-2022 走看看