`

当前线程中存放变量

阅读更多
这是一个简单的示例,代码并不完整,不能正确产生数据库连接,只不过是为了演示一下,如何在当前线程中构建并保存一个变量对象及从如何当前线程中获取之前构建的变量。其适用的场景之一是:在一个地方创建这个对象,在另一个地方使用这个对象,中间并不需要将这个对象做为参数传递。
import java.sql.Connection;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.log4j.Logger;
public class MyConnectionFactory {

private ThreadLocal thread = new ThreadLocal();
private static MyConnectionFactory instance=new  MyConnectionFactory();
public static Connection createConnection() {

ThreadLocal thread = instance.thread;
Object objConn = thread.get();
if (objConn == null) {
Connection conn = null;
try {

DataSource ds = (DataSource) obj;
conn = ds.getConnection();

thread.set(conn);
} catch (SQLException e) {

}
}
return (Connection) threadConn.get();
}


public static Connection getConnection() {
Object objConn = instance.thread.get();

Connection conn = (Connection) objConn;
return conn;
}


public static void commit(){
Object objConn = instance.thread.get();
Connection conn = (Connection) objConn;
try {
conn.commit();
} catch (SQLException e) {

}
}
}
分享到:
评论

相关推荐

    Java并发编程学习之ThreadLocal源码详析

    set方法用于将值设置到线程的本地变量中,get方法用于从线程的本地变量中获取值,remove方法用于删除线程的本地变量。 ThreadLocal的set方法实现逻辑是首先获取当前线程,然后使用当前线程作为参数调用getMap方法...

    Java多线程编程总结

    - 每个线程都有自己的程序计数器和栈,用于存放局部变量和方法调用信息。 - 线程间共享数据通常通过实例变量或静态变量实现,但需要注意同步问题。 4. **线程状态的转换**: - 新建(New)、可运行(Runnable)...

    常见windows环境变量

    这是环境变量中最重要的一个,因为它决定了命令行解释器在执行命令时的查找顺序。 #### 16. `%PATHEXT%` `%PATHEXT%`变量列出了系统认为是可执行文件的文件扩展名列表。这对于确保应用程序能够正确地识别和执行可...

    C++多线程入门[整理].pdf

    存放本线程的函数调用栈,函数内部的局部变量等。 * 部分寄存器变量。例如本线程下一步要执行代码的指针偏移量。 四、线程类定义 在 C++ 中,对多线程的支持由具体操作系统提供的函数接口支持。不同的系统中具体...

    多线程设计要点讲解 多线程设计要点讲解

    15. **yield()和sleep()**:yield()让当前线程暂停,但可能立即恢复,而sleep()指定时间后才恢复,可能提高性能。 16. **wait()和sleep()**:wait()使线程等待,释放锁,需在同步环境中使用;sleep()不释放锁,可...

    多线程编程材料

    线程一旦创建,就可以使用pthread_self函数来获取当前线程的标识符。另外,pthread_equal函数用于比较两个pthread_t类型的标识符,判断它们是否指向同一个线程。 多线程编程中,线程的创建和终止是两个关键操作。在...

    读书笔记:多线程程序设计23个要点

    16. **线程协作**:`yield()`方法让当前线程放弃CPU使用权,但不保证立即执行其他线程,有时比`sleep()`更有利于提升系统效率。 了解并熟练掌握这些多线程编程要点,有助于编写出高效、安全的并发程序。在实际开发...

    java 中ThreadLocal本地线程和同步机制的比较

    `initialValue()` 方法是一个保护方法,用于初始化当前线程的ThreadLocal变量,它默认返回`null`,但通常会被子类重写以设置特定的初始值。 ThreadLocal的实现依赖于每个线程内部的一个ThreadLocalMap,这个Map存储...

    基于多线程的电梯运行系统模拟

    为了实现这些功能,`Elevator`类需要维护自身的状态(如当前楼层、目标楼层)以及一个任务队列(可能是`Queue`类),用于存放来自用户的请求。`Queue`类可能是一个线程安全的数据结构,如`java.util.concurrent`包下...

    基于Java的多线程与线程安全实践-基于Http协议的断点续传.zip

    线程安全是多线程编程中的一个关键概念,它涉及到当多个线程访问共享资源时,如何确保数据的正确性和一致性。Java提供了多种机制来保证线程安全,如synchronized关键字、volatile变量、Lock接口(如ReentrantLock)...

    c++pthread 线程封装

    此外,`pthread_join`函数用于等待指定线程结束,`pthread_exit`函数用于结束当前线程。线程的优先级可以通过`pthread_setschedparam`函数进行设置,调度策略可以通过`pthread_attr_setinheritsched`和`pthread_attr...

    linux线程启动

    - 内核线程的管理主要通过`task_struct`结构体中的成员变量实现。 #### 三、信号处理 1. **信号队列**: - Linux系统中,信号是一种进程间通信机制,用于通知进程发生了某些事件。 - 信号队列用于存放发送给...

    ThreadLocal.pdf

    它为每个线程提供了线程局部变量,即通过get和set方法,可以访问当前线程对应的变量值。ThreadLocal保证了这些变量值在不同线程间互不干扰。 使用ThreadLocal需要注意的是内存泄露的问题。当ThreadLocal不再使用,...

    xv6源码阅读 进程 线程

    在许多操作系统中,与一个进程相关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统中的一张表中,称为进程表,进程表是数组(或链表)结构,当前存在的每个进程都要占用其中的一项。 进程有三个...

    Linux下的多线程编程

    - `pthread_exit(void *status)`:此函数用于使当前线程退出,并可以选择返回一个退出状态值。 #### 三、线程同步 为了确保多线程程序的正确性和一致性,必须采取适当的同步措施来避免竞态条件和死锁等问题。 3.1...

    linux系统编程之线程.zip

    在一个线程中调用pthread_create()创建新的线程后,当前线程从pthread_create()返回继续往下执行,而新的线程所执行的代码由我们传给pthread_create的函数指针start_routine决定。start_routine函数接收一个参数,是...

    Linux下C语言编程--线程操作

    - `thread`: 存放新创建线程ID的指针。 - `attr`: 指定线程属性的结构体指针,通常传入`NULL`表示使用默认属性。 - `start_routine`: 新线程启动时执行的函数指针。 - `arg`: 传递给`start_routine`函数的参数。...

    多线程编程

    - 按钮点击事件触发`OnSleepSixSecond`函数,该函数使当前线程休眠6秒。 - 当执行这个功能时,整个程序会变得不响应其他用户输入。 ##### 2. 多线程编程概述 - 多线程编程可以解决长时间阻塞的问题,使得程序在执行...

    Liunx多线程讲解

    - **线程终止**:`pthread_exit()` 函数用于退出当前线程,可以选择返回一个值给调用 `pthread_join()` 的线程。而 `pthread_join()` 用于等待一个线程的结束,并可选择获取该线程的退出状态。 #### 5. 示例代码 ...

Global site tag (gtag.js) - Google Analytics