<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                有多年編程經驗的軟件行業藝術家們應該都知道ThreadLocal。ThreadLocal很多地方叫做線程本地變量,也有些地方叫做線程本地存儲。通俗的講ThreadLocal可以讓創建的變量只被同一個線程進行讀和寫操作。 所以盡管有兩個線程同時執行一段相同的代碼,而且這段代碼都指向同一個ThreadLocal變量的引用,但是這兩個線程依然不能看到彼此的ThreadLocal變量域。 ~~~ ThreadLocal提供以下四個方法 public T get() { }//獲取當前線程存儲在ThreadLocal的值 public void set(T value) { }//設置當前線程往ThreadLocal存儲值 public void remove() { }//移除當前線程往ThreadLocal存儲值 protected T initialValue() { }//一個protected方法,一般是用來在使用時進行重寫的,它是一個延遲加載方法 ~~~ 接下來介紹怎樣使用ThreadLocal; 1.創建一個ThreadLocal對象。如以下代碼: ~~~ private ThreadLocal threadLocal = new ThreadLocal(); ~~~ ? 2.向ThreadLocal對象中設置當前線程變量值: ~~~ ThreadLocal.set("now Thread:"+Thread.currentThread().getName()); ~~~ ~~~ </pre></div><div><span style="white-space:pre"> </span></div><div><span style="white-space:pre"> </span>3.從ThreadLocal對象中獲取當前線程變量值;</div><div><span style="white-space:pre"> </span></div><div><span style="white-space:pre"> </span><pre name="code" class="java"> System.out.println(threadLocal.get()); ~~~ 3.完整的demo代碼: ~~~ package com.demo.test; import java.util.Random; public class MyThreadLocalTest { public static final ThreadLocal<Integer> threadLocal = new ThreadLocal<Integer>(); public static void main(String[] args) { new MyTread().start(); new MyTread().start(); new MyTread().start(); new MyTread().start(); } } class MyTread extends Thread implements Runnable { @Override public void run() { int val = (int) (Math.random()*100); System.out.println("now Thread:" + Thread.currentThread().getName() + ";val=" + val); MyThreadLocalTest.threadLocal.set(val); try { Thread.sleep(10000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("now Thread:" + Thread.currentThread().getName() + ";val=" + MyThreadLocalTest.threadLocal.get()); } } ~~~ 4.結果 ? ? ~~~ now Thread:Thread-1;val=24 now Thread:Thread-0;val=32 now Thread:Thread-2;val=41 now Thread:Thread-3;val=45 now Thread:Thread-1;val=24 now Thread:Thread-0;val=32 now Thread:Thread-2;val=41 now Thread:Thread-3;val=45 ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看