发送邮件 java实现
2010-04-04 17:40
274 查看
Java Random类可以获取随机数,请看如下代码:
public class RandomTest {
public static void main(String[] args) {
RandomTest.getRandom();
System.out.println("---------------------------");
RandomTest.notGetRandom();
}
/**
* 执行n次返回数据不同
*/
public static void getRandom(){
Random r = new Random();
for(int i=1;i<4;i++){
System.out.println("第"+i+"次结果为:"+r.nextInt());
}
}
/**
* 相同的机器执行多次返回的内容是一致的
*/
public static void notGetRandom(){
Random r = new Random(1000);
for(int i=1;i<4;i++){
System.out.println("第"+i+"次结果为:"+r.nextInt());
}
}
}
执行多次结果如下:
执行第一次输出结果为:
第1次结果为:-255222630
第2次结果为:1123609859
第3次结果为:-1656551992
---------------------------
第1次结果为:-1244746321
第2次结果为:1060493871
第3次结果为:-1826063944
执行第二次输出结果为:
第1次结果为:-552545679
第2次结果为:1866864931
第3次结果为:-1883987848
---------------------------
第1次结果为:-1244746321
第2次结果为:1060493871
第3次结果为:-1826063944
发现方法notGetRandom在相同的机器上执行n次返回的结果都是一样的。
具体原因如下:
random 源码中定义如下:
public Random() { this(++seedUniquifier + System.nanoTime()); }
private static volatile long seedUniquifier = 8682522807148012L;
每次构造一个Random对象时是以当前时间纳秒数加参数获得。
public Random(long seed) {
this.seed = new AtomicLong(0L);
setSeed(seed);
}
而Random(long seed)构造方法是以固定的种子seed获得。所以出现前面demo的情况就不言而明了。
Java中Random遵循2个规则
1、种子不同产生不同的随机数
2、种子相同即使实例不同也产生相同的随机数
public class RandomTest {
public static void main(String[] args) {
RandomTest.getRandom();
System.out.println("---------------------------");
RandomTest.notGetRandom();
}
/**
* 执行n次返回数据不同
*/
public static void getRandom(){
Random r = new Random();
for(int i=1;i<4;i++){
System.out.println("第"+i+"次结果为:"+r.nextInt());
}
}
/**
* 相同的机器执行多次返回的内容是一致的
*/
public static void notGetRandom(){
Random r = new Random(1000);
for(int i=1;i<4;i++){
System.out.println("第"+i+"次结果为:"+r.nextInt());
}
}
}
执行多次结果如下:
执行第一次输出结果为:
第1次结果为:-255222630
第2次结果为:1123609859
第3次结果为:-1656551992
---------------------------
第1次结果为:-1244746321
第2次结果为:1060493871
第3次结果为:-1826063944
执行第二次输出结果为:
第1次结果为:-552545679
第2次结果为:1866864931
第3次结果为:-1883987848
---------------------------
第1次结果为:-1244746321
第2次结果为:1060493871
第3次结果为:-1826063944
发现方法notGetRandom在相同的机器上执行n次返回的结果都是一样的。
具体原因如下:
random 源码中定义如下:
public Random() { this(++seedUniquifier + System.nanoTime()); }
private static volatile long seedUniquifier = 8682522807148012L;
每次构造一个Random对象时是以当前时间纳秒数加参数获得。
public Random(long seed) {
this.seed = new AtomicLong(0L);
setSeed(seed);
}
而Random(long seed)构造方法是以固定的种子seed获得。所以出现前面demo的情况就不言而明了。
Java中Random遵循2个规则
1、种子不同产生不同的随机数
2、种子相同即使实例不同也产生相同的随机数
相关文章推荐
- FansMail:邮件发送标准API与技术实现(Java)
- 用java实现邮件发送验证码
- Java实现邮件发送
- java实现发送邮件工具
- 如何用Java实现邮件发送?---- 网站通过邮箱激活底层代码
- java实现邮件定时发送
- Java发送邮件的简单实现
- java发送邮件简单实现以及原理(亲…
- Java实现邮件发送(带附件)
- java 邮件发送实现相关文章
- java 实现邮件发送
- 终于实现通过java发送Internet邮件了!!!分享一下
- java实现邮件的发送包括网页文件的发送
- java实现邮件发送功能工具类
- java实现简单邮件发送
- Java实现带附件的邮件发送功能
- Java远程调用邮件服务器,实现邮件发送
- [转载]javaMail Java实现邮件发送
- java实现发送邮件可多个附件内嵌图片-commons-email使用
- 使用java实现发送邮件功能