Rumah > Java > javaTutorial > Bagaimana untuk menggunakan ThreadLocal dalam java

Bagaimana untuk menggunakan ThreadLocal dalam java

PHPz
Lepaskan: 2023-05-04 13:01:06
ke hadapan
1528 orang telah melayarinya

1. Aplikasi dalam pelbagai rangka kerja

Rangka kerja Spring menggunakan ThreadLocal untuk mengurus sambungan dalam pengurusan transaksi, dan setiap rangkaian adalah Sambungan berasingan, apabila transaksi gagal, ia tidak boleh menjejaskan proses urus niaga atau hasil urutan lain Rangka kerja ORM dan Mybatis yang semua orang pernah dengar juga diuruskan oleh ThreadLocal, seperti SqlSession.

//Spring TransactionSynchronizationManager类
@Override
protected void doBegin(Object transaction, TransactionDefinition definition) {
    DataSourceTransactionObject txObject = (DataSourceTransactionObject) transaction;
    Connection con = null;
    try {
        //此处省略N行代码
        if (txObject.isNewConnectionHolder()) {
            //绑定数据库连接到线程中
            TransactionSynchronizationManager.bindResource(obtainDataSource(), txObject.getConnectionHolder());
        }
    }
    catch (Throwable ex) {
        if (txObject.isNewConnectionHolder()) {
            //当发生异常时,移除线程中的连接
            DataSourceUtils.releaseConnection(con, obtainDataSource());
            txObject.setConnectionHolder(null, false);
        }
        throw new CannotCreateTransactionException("Could not open JDBC Connection for transaction", ex);
    }
}
Salin selepas log masuk

2. Elakkan kebocoran memori

Biasanya kami menggunakan kaedah berikut untuk mengendalikan ThreadLocal, kami mesti mengeluarkannya untuk mengelakkan kebocoran memori. .

rreeee

Atas ialah kandungan terperinci Bagaimana untuk menggunakan ThreadLocal dalam java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan