`
lvwenwen
  • 浏览: 930917 次
  • 性别: Icon_minigender_1
  • 来自: 魔都
社区版块
存档分类
最新评论

子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。

 
阅读更多
public class ThreadTest {
    /**
     * 子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        new ThreadTest().init();
    }
    public void init()
    {
        final Business business = new Business();
        new Thread(
                new Runnable()
                {
                    public void run() {
                        for(int i=0;i<50;i++)
                        {
                            business.SubThread(i);
                        }                       
                    }
                   
                }
       
        ).start();
       
        for(int i=0;i<50;i++)
        {
            business.MainThread(i);
        }       
    }
   
    private class Business
    {
        boolean bShouldSub = true;//这里相当于定义了控制该谁执行的一个信号灯
        public synchronized void MainThread(int i)
        {
            if(bShouldSub)
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }       
               
            for(int j=0;j<100;j++)
            {
                System.out.println(Thread.currentThread().getName() + ":i=" + i +",j=" + j);
            }
            bShouldSub = true;
            this.notify();
       
        }
       
       
        public synchronized void SubThread(int i)
        {
            if(!bShouldSub)
                try {
                    this.wait();
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }   
               
            for(int j=0;j<10;j++)
            {
                System.out.println(Thread.currentThread().getName() + ":i=" + i +",j=" + j);
            }
            bShouldSub = false;               
            this.notify();           
        }
    }
}

 

分享到:
评论

相关推荐

    Windows下直接启动世界上最小的Linux

    Windows下直接启动世界上最小的Linux! 各位可以拿来练练手,学习学习简单指令!

    如何从子线程更新主线程数据

    本资源详细介绍了主线程和子线程之间的通信过程,通过实例讲解了参数如何传递

    qt 多线程 防止主线程做循环操作导致界面假死

    qt 多线程 防止主线程做循环操作导致界面假死。试过多线程的几种方法,只有这个方法可行。代码亲测可行。在子线程死循环,界面正常不死!!!

    主线程等待子线程结束

    对于多线程而言,一个主要的难题就是如何线程是否都已经执行结束。 也就是说,需要在主线程开启子多线程后,直到子线程全部执行结束为止,回到主线程。

    安卓开发之多线程举例

    安卓开发之多线程举例-循环计数-子线程Thread循环计数,主线程利用Handler提取子线程进位,

    C#创建子线程

    创建一个带有3个子线程的程序,第1个线程启动10ms后,第2个线程再启动,然后等候10ms后第3个线程启动,每一个线程从1~100循环输出线程的名称和计数,当3个线程结束时输出各自的结束信息,然后主线程结束。

    QT多线程—主界面卡死解决方案

    由于耗时的操作会独占系统cpu资源 ,让界面卡死在那里,这时需要考虑多线程方案,将耗时的操作放在主线程之外的线程中执行。该demo通过多线程为主界面卡死提供一种解决方案。

    Android 线程开发 开发实例

    例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。 在Android,这里的线程分为有消息循环的线程和没有消息循环的线程,有消息循环的线程...

    java面试宝典2012版.pdf

    56、子线程循环10次,接着主线程循环100,接着又回到子线程循环10次,接着再回到主线程又循环100,如此循环50次,请写出程序。 57、介绍Collection框架的结构 58、Collection框架中实现比较要实现什么接口 59、...

    用多线程实现串口读写数据以及文件的读写

    适合的读者:初学用多线程实现对串口的异步操作,对线程的理解,以及对串口的读写。还有文件的读写都有最基本的使用方式。调试时,可以用串口调试助手一起结合的去学习~

    Python多线程中阻塞(join)与锁(Lock)使用误区解析

    Thread.join() 作用为阻塞主线程,即在子线程未返回的时候,主线程等待其返回然后再继续执行. join不能与start在循环里连用 以下为错误代码,代码创建了5个线程,然后用一个循环激活线程,激活之后令其阻塞主线程. ...

    SimpleChatSystem:使用tcp简单的聊天系统

    包含客户端程和服务端独立的线程,即一个主线程和一个子线程 【1】客户端主线程 ChatClient.java 该程序根据启动时输入用户名参数,负责启动客户端子线程,由子线程建立客户端和服务端连接。在主线程中需要循环读取...

    Android消息循环机制源码深入理解

    Android消息循环机制源码 前言: 搞Android的不懂Handler消息循环机制,都...例如一个子线程从网络上下载了一副图片,当它下载完成后会发送消息给主线程,这个消息是通过绑定在主线程的Handler来传递的。 在Android

    Python-threading:线程

    主线程可以先运行完毕,等待子线程结束后 清理内存 等待时间不影响子线程的运行 子线程使用join()来阻塞主线程(这样跟单线程有啥区别) 多线程的全局变量是共享的会出现资源抢夺问题 解决资源抢夺需要上互斥锁 单线程...

    Java多线程wait和notify

    开一个子线程来完成一个循环处理的工作,我在主线程中能灵活控制这个子线程的开始、暂停/继续、结束。

    android 服务组件多线程交互

    android 的service和activity是运行在UI主线程的。在android线程中,只有主线程即UI线程有自己的默认的消息队列。子线程需要创建自己的消息队列,并把消息发给队列,并循环起来,发给handler处理。

    Linux线程退出方式总结(推荐)

    这个标志位需要主线程(或其他线程)设置,设置后,主线程调用pthread_join接口进入休眠(接口参数指定了等待的线程控制指针),子线程退出后,主线程会接收到系统的信号,从休眠中恢复,这个时候就可以去做相关的...

    Android Handler的作用与用法

    子线程可以通过Handler来通知主线程进行UI更新。 Handler是Android中引入的一种让开发者参与处理线程中消息循环的机制。每个Hanlder都关联了一个线程,每个线程内部都维护了一个消息队列MessageQueue,这样Handler...

    Android6.0 消息机制原理解析

    在编写Android应用程序时,当程序执行的任务比较繁重时,为了不阻塞UI主线程而导致ANR的发生,我们通常的做法的创建一个子线程来完成特定的任务。在创建子线程时,有两种选择,一种通过创建Thread对象来创建一个无...

Global site tag (gtag.js) - Google Analytics