- 浏览: 541427 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (233)
- 设计模式 (1)
- WEBLOGIC (2)
- spring (2)
- struts (1)
- hibernate (8)
- SOA (11)
- j2ee (0)
- corba (0)
- linux (2)
- oracle (0)
- webService (17)
- javaMail (1)
- junit (3)
- java (45)
- 正则表达式 (7)
- java+xml (4)
- html (2)
- javaScript (6)
- ajax (1)
- mysql (0)
- eclipse (2)
- eclipse插件开发 (3)
- 软件工程 (5)
- ant (6)
- 开源包 (6)
- 学习网站 (7)
- Struts2 (18)
- JSP (1)
- 持续集成 (4)
- FreeMaker (6)
- 工作项目点点 (4)
- Maven2 (6)
- JQuery (1)
- 日志记录 (9)
- 工作流 (4)
- BPEL (1)
- extJs (1)
- 组件 (1)
- OSGI (10)
- ESB总线学习 (1)
- 错误解决 (2)
- JMX (3)
- 网络知识 (1)
最新评论
-
duanlongk:
这个问题解决了么?
java.lang.NoClassDefFoundError: org/apache/tuscany -
sotrip:
从上面结果来看,HelloWorld.class是由虚拟机的内 ...
如何实现自己的classloader -
zengsir2008:
哎,不太明白。。。。
OSGI DS 实例 -
ralfsumahe:
...
使用XFire开发Web Service客户端完整入门教程 -
liuqiao_0702:
...
osgi spring hibernate =
/*
* 把一个线程交给另一个线程称:上下文切换。
* 如果处理器自愿放开处理器控制权,称为:协同式多任务,如果不这样,会造成其他挂起。
* 更多的是采用抢占式线程管理,这种优点:一是能防止单个线程单独占用处理器,二是程序员无需负责上下文切换,
* 而将责任交给操作系统
*/
/*
* 下面实例演示两个账号转账,但条件是必需保持平衡。有竞争条件一定要注意,下面可能实例不正确,但大部分情况下是正确的。
* 这样原因是线程切换时问题。在后面我们会改下。
*
*
*/
package lession3;
import java.text.*;
import java.util.*;
public class AccountManager {
protected CustomerAccount savings;
protected CustomerAccount checking;
public final static int SAVINGS_ACCOUNT=1;
public final static int CHECKING_ACCOUNT=2;
public static void main(String args[]){
int transfers=1000000;
try{
transfers=Integer.parseInt(args[0]);
}catch(Exception e){}
AccountManager am=new AccountManager(transfers);
}
public AccountManager(int transfers){
savings=new CustomerAccount(SAVINGS_ACCOUNT,1000);
checking=new CustomerAccount(CHECKING_ACCOUNT,1000);
NumberFormat formatter=NumberFormat.getCurrencyInstance(Locale.US);
System.out.println("Total balance before thansfers:"+formatter.format(savings.getBalance()+checking.getBalance()));
TransferManager tm1=new TransferManager(checking,savings,transfers);
TransferManager tm2=new TransferManager(checking,savings,transfers);
Thread t1=new Thread(tm1);
Thread t2=new Thread(tm2);
//
t1.start();
t2.start();
try{
t1.join();
t2.join();
}catch(Exception e){
}
System.out.println("Total balance after transfers:"+formatter.format(savings.getBalance()+checking.getBalance()));
}
}
//管理账号类
class TransferManager implements Runnable{
protected CustomerAccount fromAccount;
protected CustomerAccount toAccount;
protected int transferCount;
public TransferManager(CustomerAccount fromAccount,CustomerAccount toAccount ,int transfers){
this.fromAccount=fromAccount;
this.toAccount=toAccount;
this.transferCount=transfers;
}
public void run() {
double balance;
double transferAmount;
for(int i=0;i<transferCount;i++){
balance=fromAccount.getBalance();
transferAmount=(int)(balance*Math.random());
balance-=transferAmount;
fromAccount.setBalance(balance);
balance=toAccount.getBalance();
balance+=transferAmount;
toAccount.setBalance(balance);
}
}
}
//账号类
class CustomerAccount{
protected int accountType;
protected double balance;
public CustomerAccount(int type,double balance){
this.accountType=type;
this.balance=balance;
}
public int getAccountType() {
return accountType;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
* 把一个线程交给另一个线程称:上下文切换。
* 如果处理器自愿放开处理器控制权,称为:协同式多任务,如果不这样,会造成其他挂起。
* 更多的是采用抢占式线程管理,这种优点:一是能防止单个线程单独占用处理器,二是程序员无需负责上下文切换,
* 而将责任交给操作系统
*/
/*
* 下面实例演示两个账号转账,但条件是必需保持平衡。有竞争条件一定要注意,下面可能实例不正确,但大部分情况下是正确的。
* 这样原因是线程切换时问题。在后面我们会改下。
*
*
*/
package lession3;
import java.text.*;
import java.util.*;
public class AccountManager {
protected CustomerAccount savings;
protected CustomerAccount checking;
public final static int SAVINGS_ACCOUNT=1;
public final static int CHECKING_ACCOUNT=2;
public static void main(String args[]){
int transfers=1000000;
try{
transfers=Integer.parseInt(args[0]);
}catch(Exception e){}
AccountManager am=new AccountManager(transfers);
}
public AccountManager(int transfers){
savings=new CustomerAccount(SAVINGS_ACCOUNT,1000);
checking=new CustomerAccount(CHECKING_ACCOUNT,1000);
NumberFormat formatter=NumberFormat.getCurrencyInstance(Locale.US);
System.out.println("Total balance before thansfers:"+formatter.format(savings.getBalance()+checking.getBalance()));
TransferManager tm1=new TransferManager(checking,savings,transfers);
TransferManager tm2=new TransferManager(checking,savings,transfers);
Thread t1=new Thread(tm1);
Thread t2=new Thread(tm2);
//
t1.start();
t2.start();
try{
t1.join();
t2.join();
}catch(Exception e){
}
System.out.println("Total balance after transfers:"+formatter.format(savings.getBalance()+checking.getBalance()));
}
}
//管理账号类
class TransferManager implements Runnable{
protected CustomerAccount fromAccount;
protected CustomerAccount toAccount;
protected int transferCount;
public TransferManager(CustomerAccount fromAccount,CustomerAccount toAccount ,int transfers){
this.fromAccount=fromAccount;
this.toAccount=toAccount;
this.transferCount=transfers;
}
public void run() {
double balance;
double transferAmount;
for(int i=0;i<transferCount;i++){
balance=fromAccount.getBalance();
transferAmount=(int)(balance*Math.random());
balance-=transferAmount;
fromAccount.setBalance(balance);
balance=toAccount.getBalance();
balance+=transferAmount;
toAccount.setBalance(balance);
}
}
}
//账号类
class CustomerAccount{
protected int accountType;
protected double balance;
public CustomerAccount(int type,double balance){
this.accountType=type;
this.balance=balance;
}
public int getAccountType() {
return accountType;
}
public double getBalance() {
return balance;
}
public void setBalance(double balance) {
this.balance = balance;
}
}
发表评论
-
类加载机制转载
2009-06-23 09:58 2384Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某 ... -
OSGI环境下配置log4j日志
2009-05-07 14:07 1455log4j相信大家都用过的 ... -
Java虚拟机类装载:原理、实现与应用
2009-05-07 09:50 1536Java虚拟机类装载:原理、实现与应用 By jo ... -
Java程序类加载完全揭密
2009-05-07 09:49 1129Java程序类加载完全揭密 ... -
Java的类装载器(Class Loader)和命名空间(NameSpace)
2009-05-07 09:48 1799Java的类装载器(Class Loader)和命名空间(Na ... -
Java类装载体系中的隔离性
2009-05-07 09:28 1436Java类装载体系中的隔离性 正文 Java中类 ... -
了解 JAVA classloader
2009-05-07 09:21 1114什么是 ClassLoader? ... -
如何实现自己的classloader
2009-05-07 09:12 2070如何实现自己的classloader 如何实现自己的clas ... -
ClassLoader原理
2009-05-07 09:06 1047JVM规范定义了两种类型的类装载器:启动内装载器(bootst ... -
JDK1.5中的线程池(java.util.concurrent.ThreadPoolExecuto
2009-04-03 11:32 1338在多线程大师Doug Lea的 ... -
MD5
2009-03-17 09:17 1030使用 Java 生成 MD5 编码 MD5即 ... -
JAVA字符串处理函数列表一览
2009-03-14 16:48 2047Java中的字符串也是一连串的字符。但是与许多其他的计算机语言 ... -
StringTokenizer(字符串分析解析类型)(转)
2009-03-14 16:35 3146功效:将字符串以定界符为界,分析为一个个的token(可理解为 ... -
JAVA乱码分析
2009-03-14 16:33 2205UNICODE编码,它采用双字 ... -
java.util.UUID
2008-12-19 18:01 4980GUID是一个128位长的数字,一般用16进制表示。算法的核心 ... -
java应用程序中动态生成PDF文件
2008-12-11 17:05 1210很多应用程序要求动态 ... -
JAVA和JAVAC 命令行
2008-12-11 17:03 2617javac和java命令行中的-classpath选项这是个很 ... -
创建java的可执行文件
2008-12-11 16:59 1411Jar工具的作用是java程序中若干文件联合压缩到一个Jar包 ... -
深入对象复制与比较
2008-12-04 10:09 15401.对象的复制2.clone()的使用3.对象实例的比较/// ... -
解析Java对象的equals()和hashCode()的使用
2008-12-04 10:07 880在Java语言中,equals()和h ...
相关推荐
PowerThreading线程管理器是一款高效且强大的工具,专为优化多线程应用程序设计。它在软件开发领域中扮演着重要角色,特别是在处理并行计算和并发任务时,能够显著提高程序性能,减少资源浪费,确保系统稳定性。下面...
"线程管理" 本文将从实验三的线程管理中,总结出以下知识点: 一、线程管理的基本概念 * 线程管理是操作系统中的一种机制,用于管理和调度线程的执行。 * 线程可以处于不同的状态,包括running、ready、blocked等...
本文将深入探讨如何创建线程类以及如何进行线程管理,帮助你轻松掌握这一核心技能。 首先,我们来看看如何在Java中创建线程类。Java提供两种主要方式来创建线程:继承`Thread`类或实现`Runnable`接口。这两种方法都...
Pintos线程管理 Pintos Project 1: Threads是操作系统课程设计报告的实验三,主要介绍了Pintos线程管理的实现。以下是相关知识点的总结: 1. 优先级调度:在Pintos中,线程的优先级是通过priority成员变量来实现的...
本文将详细讲解如何使用C#语言来创建一个简单的进程与线程管理器,适合初学者入门。 首先,让我们了解基础概念。进程是操作系统中正在运行的一个程序实例,每个进程都有独立的内存空间,而线程则是进程内的执行单元...
在“stm32f103c8t6移植RT-Thread之线程管理”这个主题中,我们将探讨如何在STM32F103C8T6上创建和管理线程,以及线程如何与裸机程序相比提供更高级别的抽象和灵活性。 首先,我们需要了解RT-Thread的内核启动流程,...
在本实验中,我们将深入探讨Linux操作系统中的两个关键概念:多线程管理和多进程管理。这些概念对于理解和优化系统的性能至关重要,特别是在并发编程和系统资源调度方面。 首先,让我们了解多线程管理。在计算机...
线程管理器是计算机系统中一个至关重要的组件,特别是在多任务和并发编程环境中。它负责创建、调度、管理和销毁线程,确保系统资源的有效利用和程序的高效运行。线程是操作系统分配处理器时间的基本单元,允许多个...
使用Thread类创建线程需要手动地创建和管理线程,这需要开发者有充分的线程管理经验和知识。Thread类适合长作业和需要手动控制线程的场景。 例如,在一个图形用户界面程序中,我们可以使用Thread类来创建一个独立的...
线程管理是多线程编程中的关键环节,它涉及到如何创建、控制、同步以及销毁线程,以确保程序的高效性和正确性。在Java中,线程管理工具类可以帮助我们更方便地处理这些任务,避免复杂的并发问题。"线程管理工具类"如...
【线程管理模块升级】 在操作系统的设计和实现中,线程管理是核心组成部分之一,它涉及到线程的创建、销毁、调度以及同步互斥等问题。Nachos是一个开源的类UNIX操作系统,提供了一个教学和研究操作系统的平台。在这...
本篇文章将深入探讨C#中的单线程、多线程以及线程管理,帮助你理解和掌握这一核心概念。 ### 1. 单线程 在单线程环境中,程序按照预定的顺序执行,一次只能处理一个任务。C#的标准控制流(如`Console.ReadLine()`...
线程管理是操作系统中的核心概念,特别是在多任务和并发编程中。在本主题中,我们将深入探讨线程管理,特别是如何通过串口输入命令来控制线程的状态。串口通信是一种常见的设备间通信方式,而线程管理则涉及到程序...
在iOS开发中,线程管理是一项至关重要的技能,它关系到应用的性能和用户体验。本文将深入探讨iOS线程管理,特别是线程的创建和线程同步,这些都是开发者需要掌握的基本知识。 首先,我们来理解一下线程的概念。线程...
Java多线程是Java编程中的一个关键特性,它允许程序同时执行多个任务,极大地提高了程序的效率和响应性。在Java中,多线程可以通过实现Runnable接口或继承Thread类来创建。下面我们将深入探讨Java多线程的核心概念、...
线程管理是操作系统中的核心概念,特别是在多核处理器和并发编程环境下,理解并熟练掌握线程管理对于提高软件性能和优化资源使用至关重要。线程,作为程序执行的最小单元,可以独立于其他线程执行代码,共享同一进程...
操作系统进程(线程)管理课件
鸿蒙线程管理测试Demo是基于华为自研的鸿蒙操作系统(HarmonyOS)进行的一次实战演示,主要关注的是操作系统中的线程管理和调度。在计算机科学中,线程是程序执行的基本单元,它们共享同一进程的资源,通过并发执行...
在iOS和OS X开发中,Objective-C(OC)的多线程管理是至关重要的技能,它关乎应用的性能、响应速度以及资源利用效率。多线程允许程序同时执行多个任务,提升用户体验,尤其是在处理耗时操作如网络请求、大数据计算或...
在本文中,我们将深入探讨Apache Kafka的Java编程实践,特别是关注单线程和多线程在Kafka生产者与消费者中的应用,以及多线程管理器的实现。Apache Kafka是一个分布式流处理平台,广泛用于实时数据管道和消息传递。...