`

线程独享

 
阅读更多

http://www.cnblogs.com/peida/archive/2013/05/31/3070790.html

 

ThreadLocal 线程独享,synchronized 方法独享。

 

import java.text.ParseException;

public class TestSimpleDateFormat {
    
    public static class ThreadSafe extends Thread {
        @Override
        public void run() {
            while(true) {
                try {
                	System.out.println(this+"="+System.currentTimeMillis());
                    //自己等待自己2000毫秒,提高并发命中//调用线程
                	this.join(2000);
                } catch (InterruptedException e1) {
                    e1.printStackTrace();
                }
                try {
                    System.out.println(this.getName()+":"+DateUtil.parse("2015-11-11 00:00:00"));
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
        }    
    }
    
    
    public static void main(String[] args) {
        for(int i = 0; i < 3; i++){
            new ThreadSafe().start();
        }
            
    }
}

 Exception in thread "Thread-1" java.lang.NumberFormatException: For input string: "20152015E4"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)

at java.lang.Long.parseLong(Long.java:419)

at java.lang.Long.parseLong(Long.java:468)

at java.text.DigitList.getLong(DigitList.java:177)

at java.text.DecimalFormat.parse(DecimalFormat.java:1297)

at java.text.SimpleDateFormat.subParse(SimpleDateFormat.java:1589)

at java.text.SimpleDateFormat.parse(SimpleDateFormat.java:1311)

at java.text.DateFormat.parse(DateFormat.java:335)

at com.wnj.javausage.DateUtil.parse(DateUtil.java:17)

 

方式1

    private static ThreadLocal<DateFormat> sdf= new ThreadLocal<DateFormat>() {
        @Override
        protected DateFormat initialValue() {
            return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        }
    };

    public static Date parse(String dateStr) throws ParseException {
        return sdf.get().parse(dateStr);
    }

 方式2

    public static DateFormat getDateFormat() {  
        DateFormat df = threadLocal.get();  
        if(df==null){  
            df = new SimpleDateFormat(date_format);  
            threadLocal.set(df);  
        }  
        return df;  
    }  

    public static String formatDate(Date date) throws ParseException {
        return getDateFormat().format(date);
    }

 

分享到:
评论

相关推荐

    MySQL内存使用之线程独享介绍

    在 MySQL 中,线程独享内存主要用于各客户端连接线程存储各种操作的独享数据,如线程栈信息,分组排序操作,数据读写缓冲,结果集暂存等等,而且大多数可以通过相关参数来控制内存的使用量。 线程栈信息使用内存...

    mysql中的内存使用.pdf

    1 线程独享内存 2 全局共享内存 先说线程独享内存: 线程栈信息使用内存(thread_stack):主要用来存放每一个线程自身的标识信息,如线程id, 线程运行时基本信息等等,我们可以通过 thread_stack 参数来设置为每一...

    TCMalloc代码框架

    功能描述:多线程情况下频繁向系统申请内存不仅损耗效率,还会造成内存碎片的问题,在该项目中,Thread Cache用于小于256KB的内存分配,每个线程独享各自的thread cache;该层设计为哈希桶结构,线程从这里申请内存...

    关于Java堆内存是线程共享的吗?

    1、堆是线程共享的内存区域,栈是线程独享的内存区域。 2、堆中主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用。 但是其实以上两个结论并不是完全正确的。 在解释原因之前首先抛出个问题:Java对象...

    谈谈Java中的ThreadLocal

    什么是ThreadLocal  ThreadLocal一般称为线程本地变量,它是一种特殊的线程绑定...而ThreadLocal从本质上讲,无非是提供了一个“线程级”的变量作用域,它是一种线程封闭(每个线程独享变量)技术,更直白点讲,Thre

    MySQL8.0内存相关参数总结

    MySQL理论上使用的内存 = 全局共享内存 + max_connections×线程独享内存。 也就是:innodb_buffer_pool_size + innodb_log_buffer_size + thread_cache_size +table_open_cache + table_definition_cache +key_...

    求你了,别再说Java对象都是在堆内存上分配空间的了!

    Java作为一种面向对象的,跨平台语言,其...1、堆是线程共享的内存区域,栈是线程独享的内存区域。 2、堆中主要存放对象实例,栈中主要存放各种基本数据类型、对象的引用。 但是,作者可以很负责任的告诉大家,以上两

    Linux系统编程之线程同步

    资源共享(独享资源则不会) 2. 调度随机(意味着数据访问会出现竞争) 3. 线程间缺乏必要的同步机制。 以上3点中,前两点不能改变,欲提高效率,传递数据,资源必须共享。只要共享资源,就一定会出现竞争。只要...

    数据库分表处理设计思想和实现

    共享锁是在锁定的期间,其它线程也可以访问这个数据文件,但是不允许修改操作,相应的,独享锁就是整个文件就是归一个线程所有,其它线程无法访问这个数据文件。一般MySQL中最快的存储引擎MyISAM,它是基于表锁定的...

    Java 里的thread (线程)简介

    在Java里 thread 是线程的意思.  说到线程的概念, 自然离不开另外两个词: 程序和进程.  从基本的程序讲起: ... 资源的独占性: 任何时候, 内存内只有1个用户程序, 这个程序独享系统的所有资源.  2. 执行

    booking_cinema:Java客户端-服务器多线程程序,用于预订电影院的座位

    每个人独享的最高法院判决书。一部由电影《 Via Col Vento》拍摄的预告片,将于2021年2月27日在节目上发行。 19:30 ovvero fino alle。 Dopo le 19:30 le prenotazioni saranno chiuse。 Lo spettacolo inizia alle ...

    MySQL多线程复制遇到Error_code: 1872的解决方案

    上周在生产环境上遇到一个问题,不敢独享,拿出来给小伙伴们做个简单的分享。 起因 :由于IDC机房断电(估计又是哪里被挖掘机碰了下吧),导致所有服务器重启,影响到了其中的MySQL数据库。来看下这时数据库遇到的...

    优雅的使用 ThreadLocal

    Java的 Web项目大部分都是基于 Tomcat,每次访问都是一个新的线程,这样让我们联想到了 ThreadLocal,每一个线程都独享一个 ThreadLocal,在接收请求的时候 set特定内容,在需要的时候 get这个值。下面我们就进入...

    C#中lock死锁实例教程

    首先要明白为什么上面这段话能够锁定代码,其中的奥妙就是X这个对象,事实上X是任意一种引用类型,它在这儿起的作用就是任何线程执行到lock(X)时候,X需要独享才能运行下面的代码,若假定现在有3个线程A,B,C都执行到...

    android学习资料

    一路收集来的android学习资源,不敢独享,分享给大家共同学习: Android设计模式 Android开发指南 android的PPT Android开发教程 GoogleAndroid_code 深入理解Android:卷I的样章 Android-framework详细分析 Android...

    java并发包源码-ConcurrentTest:Java并发包下源码阅读与自己的测试

    java并发包源码并发测试 受保护的最终int tryAcquireShared(int未使用){/ * *演练:* 1.如果另一个线程持有写锁定,则失败。 * 2.否则,此线程符合*锁定wrt状态,...//如果第一个加入其中的是独享锁即写锁,返回tr

    python多进程控制学习小结

    前言: ...相对于多线程,多进程由于独享内存空间,更稳定安全,在运维里面做些批量操作时,多进程有更多适用的场景 multiprocessing包提供了本地和远程两种并发操作,有效的避开了使用子进程而不是全

    java7hashmap源码-Concurrency:java高并发编程

    java7 hashmap源码 ##Java 并发和高并发 ###ava 多线程模块: 并发的基本概念: 同时拥有一个或者多个...独享,专用的 S : Share 共享 I :Invalid 无效的 local read 读取本地缓存 local write 写入本地缓存 remote

    【Android】如何每隔一定的时间,自动进行某一操作

    【注:】我的博客里基本没有原创,因为我不会写代码,我只是代码的...又是一个意外在一个大神的文章里看到了Handler加Runnable线程的方法,一试 果然超爽,不敢独享,拿出来与新手们一起分享一下 这个定时功能。 public

Global site tag (gtag.js) - Google Analytics