ホームページ > Java > &#&チュートリアル > JavaでThreadLocalを適用する方法

JavaでThreadLocalを適用する方法

PHPz
リリース: 2023-05-04 13:01:06
転載
1528 人が閲覧しました

1. さまざまなフレームワークのアプリケーション

#ThreadLocal は Spring Framework のトランザクション管理で接続を管理するために使用され、各スレッドは別個の Connection になります。トランザクションが失敗しても、トランザクション プロセスや他のスレッドの結果に影響を与えることはできません。誰もが聞いたことがある ORM フレームワークと Mybatis も、SqlSession と同様に ThreadLocal によって管理されます。

//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);
    }
}
ログイン後にコピー

2. メモリリークを防ぐ

通常、ThreadLocal を操作するには次の方法を使用しますが、ThreadLocal を使用した後は、メモリリークを防ぐためにスレッドローカルを削除する必要があります。 。

rree

以上がJavaでThreadLocalを適用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート