zoukankan      html  css  js  c++  java
  • 5、线程--线程通信

    使用线程进行打印a-z

    开启两个线程进行交替打印

    测试代码如下:

    public class printTest implements Runnable{
    
        private char c = 'a';
        
        public synchronized void print(){
            if(c <= 'z'){
                System.out.println(Thread.currentThread().getName() + "---" + c);
                c++;
                //唤醒
                notify();
                try {
                    wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            
        }
        public void run() {
            while(c <= 'z'){
                print();
            }
        }
    }
    public static void main(String[] args) {
            printTest r = new printTest();
            Thread t1 = new Thread(r);
            Thread t2 = new Thread(r);
            
            t1.start();
            t2.start();
            
        }

    思想:

    在启动线程之后

    线程1启动之后首先进行相关的操作,在进行唤醒其他线程,然后再让自己进行等待

    线程2启动之后(可能处于等待状态,等待其他的线程将其唤醒)

    在得到资源分配之后,首先进行相关的操作,在进行唤醒其他线程(此时唤醒的是线程1),然后再让自己进入等待状态

    以此循环进行所以此时可以隔离打印a-z

  • 相关阅读:
    内存管理实验
    浅谈RAM和ROM的各种区别
    课程总结
    IO流
    事件处理
    继承
    第四次上机作业
    第三次上机
    Java基础实训1
    Java第二次作业
  • 原文地址:https://www.cnblogs.com/Mrchengs/p/10807015.html
Copyright © 2011-2022 走看看