线程的交互

作者: 不知所言bzsy | 来源:发表于2019-07-04 11:18 被阅读0次

题目为:要求:子线程运行执行 10 次后,主线程再运行 5 次。这样交替执行三遍
大致思路为,创建一个子线程和main函数本身的主线程。两个线程来操控程序,然后使用wait 和 notify来实现交替效果

public class 线程的交互 {

    private boolean mainflag = true;

    public static void main(String[] args) {

        线程的交互 bus = new 线程的交互();

        new Thread(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < 3 ; i++ ){
                    bus.sonMethod();
                }
            }
        }).start();

        for (int i = 0 ; i < 3 ;i ++){
            bus.mainMethod();
        }
    }

    private synchronized void sonMethod() {
        if (!mainflag){
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }

        for (int i = 0; i < 10 ; i++ ){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
        mainflag = false;
        notify();
    }

    private synchronized void mainMethod() {
        if (mainflag){
            try {
                wait();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        for (int i = 0; i < 5 ; i++ ){
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println(Thread.currentThread().getName()+":"+i);
        }
        mainflag = true;
        notify();
    }
}

值得注意的是,wait notity notifyAll必须配合synchronized使用,因为这写方法调用的时候都需要释放锁,如果没有锁汇报异常。所以需要synchronized来获取锁。(详情请自行百度 wait notity notifyAll必须配合synchronized使用)

不懈努力,慢慢前行,变成自己喜欢的样子。
之前喜欢在有道云上做笔记,因为只有自己看,所以做的偷懒不好。希望换到简述上可以认真一点。水平不高,如果问题请留言指出,一起探讨。

相关文章

  • 7.3java线程深度解析:线程的交互

    线程交互式一个很复杂的问题 一.线程交互的基础知识 线程交互知识点需要从java.lang.Object的类的三个...

  • 线程的交互

    题目为:要求:子线程运行执行 10 次后,主线程再运行 5 次。这样交替执行三遍大致思路为,创建一个子线程和mai...

  • 2019-01-25 零碎复习

    线程交互的几种方式 线程启动, A 启动 B, 线程终结, 不要用 Stop , 用 Interrupt 线程的等...

  • 线程交互

    (1)在线程中停止另一个线程 thread.stop(); 强制停止 (不安全) 由于stop的时候线程可能处于...

  • 线程交互

    线程交互的基础知识 首先看下java.lang.Object的类的三个方法: void notify()唤醒此对象...

  • 线程交互

    线程安全 概述:在多个线程同时运行时发生的异常情况统称为线程安全问题产生:线程随机访问性、有多个线程并行、多个线程...

  • Android线程与消息机制

    OUTLINE §UI线程 §Looper §消息机制 §线程交互 §AsyncTask §Activity/Se...

  • 线程间通信原理及Android多线程

    线程间交互 一个线程启动别的线程:new Thread().start()、Executor.execute() ...

  • Java自学-多线程 交互

    Java 线程之间的交互 wait和notify 线程之间有交互通知的需求,考虑如下情况:有两个线程,处理同一个英...

  • Android JsBridge线程

    jsBridge线程是WebView内html与app完成js交互的线程,此线程拥有自己的ViewRootImpl...

网友评论

    本文标题:线程的交互

    本文链接:https://www.haomeiwen.com/subject/aujlhctx.html