`
tangkuo
  • 浏览: 101021 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

利用资源对象控制多线程同步问题设计思想

阅读更多
package cn.itcast.heima2;

import java.util.concurrent.atomic.AtomicInteger;

/**
* 主要利用资源对象控制多线程同步问题设计思想,
* 把需要同步的资源放在单独的类中,或者是加解密这类高类聚的,程序健壮性更强
*
* 子线程执行100,接着执行主线程10,如此往复执行50次。
*
* @author Administrator
*
*/
public class TraditionalThreadCommunication {

/**
* @param args
*/
public static void main(String[] args) {

final Business business = new Business();
new Thread(
new Runnable() {

@Override
public void run() {

for(int i=1;i<=50;i++){
business.sub(i);
}

}
}
).start();

for(int i=1;i<=50;i++){
business.main(i);
}

}

}
  class Business {
  private boolean bShouldSub = true;
  public synchronized void sub(int i){
  while(!bShouldSub){
  try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }
for(int j=1;j<=10;j++){
System.out.println("sub thread sequence of " + j + ",loop of " + i);
}
  bShouldSub = false;
  this.notify();
  }
 
  public synchronized void main(int i){
  while(bShouldSub){
  try {
this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  }
for(int j=1;j<=100;j++){
System.out.println("main thread sequence of " + j + ",loop of " + i);
}
bShouldSub = true;
this.notify();
  }
  }
分享到:
评论

相关推荐

    嵌入式C语言中的面向对象与多线程编程.pdf

    传统上,嵌入式系统受限于微控制器的代码空间,使用常规的面向对象和多线程模型往往会导致资源过度消耗,不适配于嵌入式环境。 为了解决嵌入式系统中软件开发的这一难题,本文提出了一种创新的编程机制,通过特殊...

    Delphi中多线程程序的编写

    在多线程环境中,线程间的同步和通信至关重要,以避免数据竞争和死锁等问题。 1. Synchronize方法:用于在线程与主线程间安全地交换数据。在Execute方法中,可以调用Synchronize,确保代码在主线程上下文中执行。 ...

    VC多线程编程

    相比于单线程,多线程能充分利用CPU资源,提升程序性能,尤其是在I/O密集型或计算密集型应用中。 二、VC多线程API 在VC中,多线程编程主要依赖于Windows API提供的`CreateThread`函数或者C++标准库中的`std::thread...

    多线程编程指南.pdf

    综上所述,《多线程编程指南》涵盖了从理论到实践的多线程编程各个方面的知识,旨在帮助开发者理解和掌握多线程编程的核心概念和技术要点,从而能够有效地设计和实现高性能的多线程应用程序。无论是初学者还是有一定...

    多线程下载器.zip易语言项目例子源码下载

    通过这个易语言项目实例,我们可以学习到如何利用多线程技术来提高下载效率,同时掌握易语言的基本编程技巧和面向对象设计思想。无论是个人学习、学生毕业设计,还是小团队开发项目,都能从中汲取宝贵的经验,为未来...

    多线程技术在开放式数控实验系统中的应用

    在这种系统中,软件通常基于Windows操作系统,利用多线程技术可以提高系统的实时性能和并行处理能力。在文章中,作者通过创建用户界面线程和辅助线程,实现数控系统的多个功能模块的实时并行处理,这包括用户界面...

    蜘蛛爬虫程序的多线程控制(C#语言).txt

    多线程的核心思想是在一个进程中创建多个线程来并行执行不同的任务,从而充分利用计算机资源。 #### 二、多线程爬虫的实现步骤 1. **初始化线程**:首先需要定义一个线程委托,它用于指定线程执行的具体任务。例如...

    第2章-Java多线程应用ppt课件(全).ppt

    本课件主要讲解了Java多线程应用的基本概念、线程的生命周期、多线程同步机制等重要知识点。 首先,课件讲解了线程的基本概念。线程是计算机正在执行的程序中的一个控制流程。线程本身不是完整程序,没有执行的入口...

    c#多线程之生产者消费者

    1. **Monitor**:C#中的Monitor类提供了基于对象锁的线程同步,使用`Monitor.Enter`和`Monitor.Exit`方法获取和释放锁。生产者在向队列添加元素时会获取锁,完成后再释放;消费者在取元素时同样需要获取锁,确保同一...

    汇编语言实验8-多线程.doc

    汇编语言实验8-多线程.doc ...通过本实验,我们可以深入了解 Windows 程序设计的基本思想和基于消息的程序设计方法,并且学会设计一个多线程同步程序,解决线程同步问题,提高程序的执行效率和可靠性。

    多线程精品资源--based on C++11 , a mini threadpool , accept varia.zip

    C++11标准引入了对多线程的支持,使得开发者可以直接在C++代码中处理并发任务,从而充分利用多核处理器的优势。本资源包“多线程精品资源--based on C++11 , a mini threadpool , accept varia.zip”显然聚焦于C++11...

    C#多线程详解

    这种模式允许开发者编写异步代码而不必担心线程同步问题。 **5. 异步和多线程的关联** 异步编程和多线程紧密相关,但又有所不同。异步编程侧重于非阻塞式的编程模型,使得程序能够在等待某个操作完成的同时继续...

    多线程生产者消费者模式

    在Delphi中,可以使用TThread类来创建和管理线程,同时利用T semporal、TCriticalSection或TSemaphore等同步对象来控制对共享资源的访问。以下是对生产者消费者模式在Delphi中的实现步骤的详细说明: 1. **定义共享...

    多线程下载实例源码

    首先,多线程下载的核心思想是将一个大文件分割成多个小部分,每个部分在一个单独的线程中进行下载。这样,多个线程可以同时工作,充分利用网络资源,达到加速下载的目的。在VC++中,我们可以利用Windows API中的...

    java多线程_设计模式_各种技术(我的书架)

    线程同步是为了避免多个线程同时访问共享资源导致的数据不一致问题,Java提供了多种同步机制,如synchronized关键字、wait()和notify()方法、ReentrantLock重入锁以及Semaphore信号量等。 设计模式是软件工程中经过...

    java多线程学习java多线程学习.docx

    在Java编程领域,多线程是一项至关重要的技术,它允许应用程序同时执行多个任务,从而提高系统资源利用率和程序性能。本文将深入探讨Java中的多线程概念,以及Doug Lea在此领域的贡献。 首先,理解多线程的基本概念...

    多线程端口扫描工具V1.0

    需要注意的是,多线程可能会带来资源竞争和同步问题,开发者需要合理控制线程数量,避免过多线程导致系统资源耗尽。此外,适当的错误处理和异常捕获机制也是必不可少的,以确保工具在遇到网络问题或目标主机响应慢时...

Global site tag (gtag.js) - Google Analytics