java一个(1.用Java语言编写一个程序,判断一个年份是否是闰年)

本文目录
1.用Java语言编写一个程序,判断一个年份是否是闰年
以下是用Java编写的判断一个年份是否是闰年的示例代码:
Copy code
import java.util.Scanner;
public class LeapYear {
public static void main(String args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入待判断的年份:");
int year = sc.nextInt();
boolean isLeapYear = false;
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0) {
isLeapYear = true;
} else {
isLeapYear = false;
}
} else {
isLeapYear = true;
}
} else {
isLeapYear = false;
}
if (isLeapYear) {
System.out.println(year + "是闰年。");
} else {
System.out.println(year + "不是闰年。");
}
}
}
这个程序中,首先提示用户输入一个年份,然后使用一个布尔变量isLeapYear来存储程序是否判断为闰年,如果是闰年,则为true,否则为false。然后使用嵌套的if语句来判断年份是否为闰年。如果年份可以被4整除,则可能是闰年,然后判断它是否也可以被100整除。如果年份可以被100整除,则只有当它同时能被400整除时才是闰年。如果年份不是可以被4整除的,则不是闰年。
最后使用if语句和输出语句来告诉用户输入的年份是否是闰年。
如何计算一个Java程序运行占用多少内存
可以用 system(命令) 调用 DOS/Windows 命令 获取 正在使用多少 内存 (memory).
命令例子:
wmic process where name="cmd.exe" get WorkingSetSize
这里 "cmd.exe" 你可替换成 你的程序 名字。
你也可以用你的程序 进程 PID 号数 调用, 命令是:
wmic process where processid=6884 get WorkingSetSize
这里6884你可替换成 你的程序 进程 PID。
输出有2行,第二行是占用内存字节数:
WorkingSetSize
4616192
c/c++ 语言 :
system("wmic process where processid=6884 get WorkingSetSize");
system("wmic process where name=\"cmd.exe\" get WorkingSetSize");
用程序名调用时,若有多个同名程序在运行,输出的 内存数 将分行输出出来。
Java应用程序中如何动态的分配CPU资源
方案选择
在考虑动态分配CPU资源实施方案时,往往有以下两点要求:
1. 须充分利用现有硬件资源,在系统空闲时,让低优先级任务也能够得到系统所能给予最快响应。
2.当硬件资源超负荷运行时,虽然系统中有大规模、多数量任务不能处理,但它不应受影响,而能够顺利处理那些能够被处理、最重要高优先级任务。
多任务系统要用多线程实现最简单方法就是将线程和任务一一对应,动态调整线程优先级,利用线程调度来完成CPU资源在不同任务间动态分配。这种思路在以前使用本地化代码(Native Code),充分利用特定硬件和操作系统技巧基础上是基本可行。但在跨平台Java环境中,这个思路对仅有小规模任务数简单系统才可行,原因有以下两点:
1. Java线程虽然在编程角度(API)是与平台无关,但它运行效果却和不同操作系统平台密切相关。为了利用更多CPU资源,Java中一个线程(Thread)就对应着不同操作系统下一个真实线程。因为Java虚拟机没有实现线程调度,所以这些Java线程在不同操作系统调度下运行差异性也就比较明显。例如在Windows系统中,不仅线程优先级少于Java API参数规定十个优先级,而且微软明确反对程序员动态调整线程优先级。即使在操作系统中有足够优先权,让线程优先级参数和真实线程优先级对应,不同操作系统调度方式也会有许多不同。这最终会造成代码在不同平台上行为变得不可预测。这就很难满足复杂、大规模并发任务众多优先级需求,从而很难达到用户业务需要达到效果。
2. 由于在Java系统中,线程被包装在一个Java语言对象类—Thread中,所以为了完成Java语言对象和操作系统线程对应,Java线程系统开销还是比较大(在NT 4.0中,平均每个线程大致占用30KB内存)。因此如果让Thread对象个数和成千上万任务数同比例增长,就显然是不合理。
内容摘要:本文利用协调式多任务模型,提出一个与平台无关、并且能在任务间动态分配CPU资源方案。
综上所述,根据并发多任务大规模需求和Java平台固有特点,想要利用Java Thread对象优先级调整CPU资源分配是非常困难,所以应该尽量避免让线程和任务直接对应,也尽量避免使用操作系统线程优先级调度机制。
解决方案
根据以上分析,问题症结在于:多任务系统中任务在Java语言中对应以及任务间相互调度。
从本质上看,一个任务就是一系列对象方法调用序列,与JavaThread对象或者别类对象没有必然联系。在避免使用不同操作系统线程调度且同时Java虚拟机又没有线程调度能力情况下,要想构造一个协调式多任务系统,让各个任务相互配合就成了最直接思路。协调式多任务系统一般有以下特点:
1. 任务由消息驱动,消息响应代码完成任务逻辑处理;
2. 消息队列完成消息存储和管理,从而利用消息处理次序体现任务优先级不同;
3. 任务中耗时消息响应逻辑能够主动放弃CPU资源,让别任务执行(像Windows 3.1中Yield函数、Visual Basic中DoEvents语句)。
可能出于巧合,Java语言具有构造协调式多任务系统天然条件。Java对象方法不仅是一个函数调用,它还是一个java.lang.reflect.Method类对象。而所有对象方法都可以通过Method类invoke方法调用。如果能使每个任务所对应一系列方法全部以对象形式包装成消息,放到消息队列中,然后再按照自己优先级算法将队列中消息取出,执行其Method对象invoke调用,那么一个基本协调式多任务系统就形成了。其中,任务优先级和线程优先级没有绑定关系。该系统主体调度函数可以设置成一个“死循环”,按照需要优先级算法处理消息队列。对于有多重循环、外设等待等耗时操作消息响应函数,可以在响应函数内部递归调用主体调度函数,这一次调用把原来“死循环”改成在消息队列长度减少到一定程度(或者为空)后退出。退出后,函数返回,执行刚才没有完成消息响应逻辑,这样就非常自然地实现了协调式系统中任务主动放弃CPU资源要求。

更多文章:
capital会计里面表示什么(会计里的capital=asstes具体是什么意思)
2025年11月26日 23:15
使用yum安装mysql教程(怎么样使用yum来安装mysql)
2026年4月19日 01:00
substring按字节截取(用C#写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串 但是要保证汉字不被)
2026年4月24日 15:00
进制转换公式代表字母(二进制八进制十进制十六进制符号是什么)
2025年7月6日 02:45
websocket浏览器兼容(websocket怎样兼容ie8)
2025年5月24日 04:30
except for与except和besides的区别口诀(except for与except和besides的区别是什么)
2025年9月10日 09:30
linux配置与管理web服务器(高分请教如何搭建Linux下的web服务器)
2025年12月1日 02:00
for index怎么使用(能帮我说一下那个for(int i : index)有什么作用吗,其他的都看明白了,唯独那个)
2026年1月24日 22:30
seeyou开头的一首英文歌(有的首英文歌的歌词,开头是See you See me.这首歌叫什么名字,谢了哈)
2026年4月29日 19:30
在asp中if语句的语法是什么?asp中replace的具体用法!!
2025年9月30日 19:15
怎么看有没有装jdk(在windows系统下怎么查看有没有安装jdk)
2025年11月1日 17:15
protected与private的区别(VC++中的public,private,protected的区别,说得通俗点)
2026年8月25日 22:45
smart keyboard(smartkeyboard怎么关闭语音输入‘)
2025年7月12日 11:00










