`
de6566088
  • 浏览: 31652 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

多线程问题

 
阅读更多

题目要求,主线程循环100次,子线程循环10次,再主线程循环100次,子线程循环10次,循环50次

开始的设计思想就是两边互相监听,由主线程开始进行100次,然后子线程监听到进行子线程的一个流程!虽然是个实例但是占用了相当大的系统资源,是一个不可取的思想。今天也感觉到自己距离还差好远呀继续努力。而且在写的时候也犯了很致命的错误,JAVA的基础功底需要加强了

 

public class ThreadTest {
 //全局变量设计(为了实现功能的设计...影响效率的一方面)
 static int i=0;
 static int j=0;
 static int k=0;
 public static void main(String[] args) {
  //线程方法
  new Thread(new Runnable() {
   public void run() {
    //线程启动时,i=0,此时此方法启动,进行100次循环
    while(i%10==0){
     try {
      Thread.sleep(100);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     j++;
     System.out.println("子j"+j+"父i"+i);
    }
   }
  }).start();
  
  new Thread(new Runnable() {
   public void run() {
    while(true){
     try {
      Thread.sleep(40);
     } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
     }
     //j!=0时放在在初始时就被开启,当j到100时启动
     while(j%100==0&&j!=0){
      i++;
      System.out.println("父i"+i+"子j"+j);
      try {
       Thread.sleep(100);
      } catch (InterruptedException e) {
       // TODO Auto-generated catch block
       e.printStackTrace();
      }
     }
    }
    
   }
  }).start();

 }
}

 但是这样运行并没有达到我的预想,因为会打出这样的情况父i1子j100当i=1的时候也进入了第一个线程,打出子j101父i1这样我就很不理解这到底发生了什么?求高手指点开来。

分享到:
评论

相关推荐

    面试中多线程问题

    "面试中多线程问题" 多线程是 Java 编程中一个重要的概念,掌握多线程可以帮助开发者更好地编写高效、稳定的程序。以下是面试中常见的多线程问题和解释: 1. 实现多线程的几种方法? Java 中有两种方式可以实现多...

    vb.bet多线程问题(转载)

    标题中的“vb.bet多线程问题”指出讨论的核心是关于VB.NET编程语言中的多线程技术。在.NET框架中,多线程是程序设计的一个重要方面,它允许应用程序同时执行多个任务,提高效率和响应性。VB.NET作为.NET框架的一部分...

    Java多线程问题总结.doc

    Java多线程问题总结 Java多线程是Java编程中不可或缺的一部分,特别是在现代计算机系统中,多核CPU的广泛使用使得多线程成为提高程序性能的关键。本文将深入探讨Java多线程的几个核心概念和应用场景。 首先,利用...

    Delphi多线程问题

    【Delphi多线程问题详解】 在Delphi编程中,多线程技术是提升应用程序性能的关键,尤其是在现代多核处理器的环境下。多线程允许程序同时执行多个任务,从而充分利用计算资源。然而,多线程的使用也伴随着一系列挑战...

    C#多线程问题2-简单案例-i++ c#经典案例.pdf

    C#多线程问题2-简单案例-i++经典案例 C#多线程问题2-简单案例-i++经典案例是C#编程语言中多线程编程的经典案例,它展示了多线程资源共享问题的典型解决方案。本案例中,我们将学习如何使用C#语言来解决多线程问题,...

    MFC中的多线程问题.pdf

    MFC支持多线程编程,本文将深入探讨MFC中的多线程问题。 首先,MFC中的多线程主要分为两种:工作线程(Worker Thread)和用户界面线程(User Interface Thread)。工作线程主要用于后台任务处理,而用户界面线程则...

    1工作临时-servlet 多线程问题

    标题中的“1工作临时-servlet 多线程问题”表明我们即将探讨的是在实际工作中遇到的一个与Servlet和多线程相关的技术难题。Servlet是Java Web开发中用于处理HTTP请求的服务端组件,而多线程则涉及到并发编程,是...

    Java多线程问题及处理笔记.doc

    因此,开发者需要不断实践,学习如何有效地管理和控制线程,以及如何预防和解决多线程问题。在设计多线程应用时,应遵循良好编程习惯,例如最小化共享状态,使用线程安全的数据结构,以及采用适当的同步和并发控制...

    C++多线程问题汇总

    C++多线程常见问题汇总,快来学习吧~~~~~~~~~~~~~~~~~~~~~~~~

    MFC中的多线程问题[参照].pdf

    3. **线程同步和通信**:多线程环境下,线程间可能会存在优先级问题和资源竞争。Windows提供了多种同步机制,如临界区(Critical Section)、互斥量(Mutex)、信号量(Semaphore)和事件对象(Event)。这些机制...

    XP多线程补丁XP多线程补丁

    描述中的重复文本“XP多线程补丁”强调了这个补丁的重点,可能是为了突出其重要性或者提醒用户该补丁是专门针对Windows XP的多线程问题而设计的。由于Windows XP已停止官方支持,这样的第三方补丁可能来自社区开发者...

    多线程面试题

    理解这些状态以及它们之间的转换是分析多线程问题的关键。 4. **同步机制**:Java提供了多种同步机制,包括synchronized关键字、Lock接口(如ReentrantLock)以及volatile关键字。synchronized用于控制对共享资源的...

    delphi多线程批量下载

    在描述中提到了“线程稳定”,这意味着该代码设计考虑了线程间的同步和通信,避免了竞态条件、死锁等多线程问题,确保了程序的稳定运行。同时,“可突破服务器限速”意味着可能采用了某种策略,如设置合适的下载速度...

    多线程游戏坦克大战

    例如,调试工具可以帮助开发者定位多线程问题,如死锁、竞态条件等。版本控制系统(如Git)用于代码的版本管理和团队协作。构建工具(如Maven或Gradle)可以自动化编译、打包和部署过程,提高开发效率。而性能分析...

    有关Junit和多线程测试的问题

    在软件开发过程中,测试是确保代码质量和功能正确性的重要环节。...同时,这个库也体现了在复杂并发场景下,测试工具和策略的重要性,它可以帮助开发者更好地理解和调试多线程问题,提升整体的软件质量。

    多线程开发书籍

    #### 四、常见多线程问题及解决方法 1. **竞态条件**:当两个或更多的线程共享数据,并且这些线程都试图修改这个数据时,如果没有正确的同步机制,可能会导致竞态条件。 - **解决方法**:使用互斥锁、信号量等同步...

    csdn_多线程

    **五、多线程问题与解决方案** 1. **死锁**:多个线程相互等待对方释放资源,导致所有线程都无法继续。解决方法包括避免嵌套锁、设置锁超时、死锁检测和恢复等。 2. **竞态条件**:当多个线程同时修改共享数据时...

    C#多线程实例

    1. **线程状态**:包括新建、就绪、运行、阻塞、等待、挂起、终止等,了解这些状态有助于理解和调试多线程问题。 2. **Join**:线程A调用线程B的Join方法,会等待B线程结束后再继续执行。 3. **Thread.Abort**:...

Global site tag (gtag.js) - Google Analytics