Java Thread Local 류 응용 실전 사례 분석
3473 단어 JavaThreadLocal 클래스
눈여겨보다
ThreadLocal 은 Thread Local Variable(스 레 드 부분 변수)이라는 뜻 으로 ThreadLocalVar 라 고 명명 하 는 것 이 더 적합 할 수 있 습 니 다.
스 레 드 부분 변수(ThreadLocal)의 실제 기능 은 매우 간단 합 니 다.이 변 수 를 사용 하 는 모든 스 레 드 에 변수 값 의 사본 을 제공 하여 모든 스 레 드 가 자신의 사본 을 독립 적 으로 바 꿀 수 있 고 다른 스 레 드 의 사본 과 충돌 하지 않도록 하 는 것 입 니 다.스 레 드 의 측면 에서 볼 때 모든 스 레 드 가 이 변 수 를 완전히 가지 고 있 는 것 같다.
ThreadLocal 클래스 의 용법 은 매우 간단 합 니 다.다음 세 가지 Public 방법 만 제공 합 니 다.
T get()
:이 스 레 드 부분 변수 에서 현재 스 레 드 던 전의 값 을 되 돌려 줍 니 다.void remove()
:이 스 레 드 부분 변수 에서 현재 스 레 드 의 값 을 삭제 합 니 다.void set(T value)
:이 스 레 드 부분 변수 에서 현재 스 레 드 던 전의 값 을 설정 합 니 다.코드
class Account
{
/* ThreadLocal ,
*/
private ThreadLocal<String> name = new ThreadLocal<>();
// name
public Account(String str)
{
this.name.set(str);
// name
System.out.println("---" + this.name.get());
}
// name setter getter
public String getName()
{
return name.get();
}
public void setName(String str)
{
this.name.set(str);
}
}
class MyTest extends Thread
{
// Account
private Account account;
public MyTest(Account account, String name)
{
super(name);
this.account = account;
}
public void run()
{
// 10
for (int i = 0 ; i < 10 ; i++)
{
// i == 6
if (i == 6)
{
account.setName(getName());
}
//
System.out.println(account.getName()
+ " i :" + i);
}
}
}
public class ThreadLocalTest
{
public static void main(String[] args)
{
// , Account,
// Account name, Account name,
Account at = new Account(" ");
/*
,
ThreadLocal ,
, i == 6 ,
。
*/
new MyTest(at , " ").start();
new MyTest(at , " ").start ();
}
}
2 운행초기 이름
null 계 정의 i 값:0
null 계 정의 i 값:0
null 계 정의 i 값:1
null 계 정의 i 값:1
null 계 정의 i 값:2
null 계 정의 i 값:2
null 계 정의 i 값:3
null 계 정의 i 값:3
null 계 정의 i 값:4
null 계 정의 i 값:4
null 계 정의 i 값:5
스 레 드 갑 계 정의 i 값:6
스 레 드 갑 계 정의 i 값:7
스 레 드 갑 계 정의 i 값:8
스 레 드 갑 계 정의 i 값:9
null 계 정의 i 값:5
라인 을 계 정의 i 값:6
라인 을 계 정의 i 값:7
라인 을 계 정의 i 값:8
라인 을 계 정의 i 값:9
설명
계 정 이름 은 실제 3 개의 사본 이 있 습 니 다.메 인 스 레 드 는 하나 이 고 다른 시작 하 는 두 스 레 드 는 각각 하나 입 니 다.그들의 값 은 서로 간섭 하지 않 습 니 다.모든 스 레 드 는 자신의 ThreadLocal 변 수 를 가지 고 있 습 니 다.이것 이 바로 ThreadLocal 의 용도 입 니 다.
참고
//www.jb51.net/article/170439.htm
더 많은 자바 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 고 에서 말 한 것 이 여러분 의 자바 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.