`
wzucxd
  • 浏览: 25081 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Date().getTime()线程堵塞问题

 
阅读更多

new Date().getTime()出现线程堵塞的问题概率比较低,但是一旦出现,那么性能也将下降很多,下面代码可以测试这个问题,创建10个线程,不断执行。

其堵塞原因在于这个方法引用了getJulianCalendar(),

synchronized private static final BaseCalendar getJulianCalendar() {
if (jcal == null) {
jcal = (BaseCalendar) CalendarSystem.forName("julian");
}
return jcal;
}


测试代码:

public class DuMain {

	public static void main(String[] args) {
		long time = System.currentTimeMillis();
		test();
		long end = System.currentTimeMillis();
		System.out.println(end - time);
		
		//................
		for(int i=0;i<10;i++){
			new Thread(){
	
				@Override
				public void run() {
					for(int i=0;i<1000000000;i++){
						test();
	//					System.out.println(i);
					}
				}
				
			}.start();
		}
		for(int i=0;i<1000000000;i++){
			time = System.currentTimeMillis();
			test();
			end = System.currentTimeMillis();
			System.out.println(""+i+"--"+(end - time));
//			System.out.println(i);
		}
		
	}

	public static boolean test() {

		Date begin = new Date();
		int ONE_SECOND = 2;
		boolean result = false;
		while (true) {
			if (new Date().getTime() - begin.getTime() >= ONE_SECOND) {
				result = true;
				break;
			}
		}

		return result;

	}
}



result:

....

11423--2
11424--274
11425--2
11426--3

....


可以看到运行到一定次数的时候就会被阻塞一下

分享到:
评论

相关推荐

    JAVA new Date()或Calendar.getInstance().getTime()得到的时间不对

    NULL 博文链接:https://ollevere.iteye.com/blog/1320854

    javascript 倒计时

    var nMS =EndTime.getTime() - NowTime.getTime();//getTime()方法将日期转为毫秒数;1秒=1000毫秒 var senconds=1000; var minutes=senconds*60; var hours=minutes*60; var days=hours*24; var nD =Math.floor(nMS...

    判断2个时间大小

    if (date2.getTime()&lt;date1.getTime()){ i= 1; }else if (date2.getTime()==date1.getTime()){ i= 2; }else if (date2.getTime()&gt;date1.getTime()){ //正常情况下的逻辑操作. i= 3; } } catch (Parse...

    warped-time:s提供与Date.getTime()等效的选项,具有可变的进度速度和可选的服务器时间同步

    扭曲时间:控制时间的进度 :play_button: | | | 简单的Javascript库,提供与Date.getTime()等效的变量,并且具有可变的进度速度。 它有一个钩子来接收时间戳和估计的延迟,用于与后端服务器的时间保持同步。yarn add...

    javascript 元旦倒计时的代码

    var yd_time = yd_date.getTime(); var one_second = 1000; var one_minute = one_second * 60; var one_hour = one_minute * 60; var one_day = one_hour * 24; getRemainTime(); function getRemainTime...

    Android GPS时间转本地时间

    android gps开发获取的时间“location.getTime()”,转换为本地北京时间的代码,经测试绝对好用。

    vue element ui 时间选择器设置

    return time.getTime() Date.now(); } }, pickerOptions1: { disabledDate: time =&gt; { // 使用2018年的毫秒时间戳判断 return time.getTime() Date.now(); } } } } 在发送请求之前进行日期的判断,

    jQuery实现强制cookie过期方法汇总

    date.setTime(date.getTime() + (x * 60 * 1000)); $.cookie('example', 'foo', { expires: date }); 方法二: [removed] var expiresDate= new Date(); expiresDate.setTime(expire.getTime() + (? * 60 * 1000))...

    nodejs如何获取时间戳与时间差

     2.Date.now()  3.process.uptime()  4.process.hrtime() 平时想获取一个时间戳的话,用这些方法都可以,那么这些方法有什么区别呢? new Date().getTime()和Date.now() 这些方法是通过node运行环境的系统...

    date-algo:字谜,咖喱等也包括在内

    JavaScript日期问题 ...if (date3.getTime() &gt; date1.getTime () & & date3.getTime () &lt; date2.getTime ()) { console.log( ' Given date is in between ' ) ; } else { console.log( ' Given date is no

    计算工作日

    if(holidayArray[i].getTime()&gt;orgTime && holidayArray[i].getTime()&lt;to.getTime()){ if(holidayArray[i].getDay()&gt;0 && holidayArray[i].getDay()){ workdays--; } } } } return workdays; } [removed]

    JavaScript中的getTime()方法使用详解

    javascript Date.getTime()方法按照通用时间对应的时间为指定日期返回数值。由getTime方法返回的值是毫秒自1970年1月1日00:00:00的数。 您可以使用此方法来帮助指定日期和时间到另一个Date对象。 语法 Date.getTime...

    50行代码实现 元旦倒计时,喜欢的拿去吧,效果很棒!(不知道怎么上传图片效果,自己下载看吧)

    &lt;div&gt;&lt;h1 class="title"&gt;喜迎 2023&lt;/h1&gt;&lt;/div&gt; &lt;div&gt;&lt;span class="title2"&gt;距离元旦... var now_time=Math.round(new Date().getTime()/1000); var lefttime= parseInt(end_time-now_time); console.log(lefttime

    解决苹果ios用js的Date()出现NaN的问题

    以上这篇解决苹果ios用js的Date()出现NaN的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:关于js new Date() 出现NaN 的分析

    java DATE与时间戳互化

    System.out.print("Format To times:"+date.getTime()); 运行结果: Format To times:445555000 4、注意 定义SimpleDateFormat时new SimpleDateFormat("yyyy-MM-dd HH:mm:ss" );里面字符串头尾不能有空格...

    Delphi getTime 获取当前日期时间实例源码.rar

    Delphi getTime 获取当前日期时间,用的是DateTimeToStr,运行本窗口后,自动获取当前电脑上的时间,显示在窗体指定的Lable标签中,这是核心的源代码:  procedure TForm1.Timer1Timer(Sender: TObject);  begin ...

    个人网站的素材

    sd = new java.sql.Date(ud.getTime());2、如果要插入到数据库并且相应的字段为Date类型那么可以用PreparedStatement.setDate(int ,java.sql.Date)方法其中的java.sql.Date可以用上面的方法得到也可以用数据库提供...

    javascript时间扩展类dateplus.zip

    // Date.formats.date='yyyy-mm-dd' // 2014-10-02 d.format('date'); // Date.formats.long='yyyy-mm-dd\u00a0hh:MM:ss' // 2014-10-02 10:00:00 d.format('long'); // you can custom by ...

    新软件库和调用QQ登录IAPP源码已修复报错

    java(stamp,date,”java.util.Date.getTime”) s(stamp/1000,ss.times) //毫秒级变成秒级 ss(ss.times+”yuqios”,ss.timemd5) call(ss.timemd5, “mjava”, “md5.md5st”,ss.timemd5) end fn 源码纯净无后,放心...

    计算2个日期间的天数,支持跨月计算

    const date1Time = sdate1.getTime(); // 获取时间戳 const date2Time = edate2.getTime(); const difference = Math.abs(date1Time - date2Time); // 获取时间差 var days = Math.round(difference / ONE_DAY)...

Global site tag (gtag.js) - Google Analytics