spring core advanced : concurrency problem
This commit is contained in:
@@ -23,6 +23,9 @@ dependencies {
|
||||
compileOnly 'org.projectlombok:lombok'
|
||||
annotationProcessor 'org.projectlombok:lombok'
|
||||
testImplementation 'org.springframework.boot:spring-boot-starter-test'
|
||||
|
||||
testCompileOnly 'org.projectlombok:lombok'
|
||||
testAnnotationProcessor 'org.projectlombok:lombok'
|
||||
}
|
||||
|
||||
test {
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package com.example.advanced.trace.threadlocal;
|
||||
|
||||
import com.example.advanced.trace.threadlocal.code.FieldService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
@Slf4j
|
||||
public class FieldServiceTest {
|
||||
|
||||
private FieldService fieldService = new FieldService();
|
||||
|
||||
@Test
|
||||
void field() {
|
||||
log.info("main start");
|
||||
Runnable userA = () -> {
|
||||
fieldService.logic("userA");
|
||||
};
|
||||
|
||||
Runnable userB = () -> {
|
||||
fieldService.logic("userB");
|
||||
};
|
||||
|
||||
Thread threadA = new Thread(userA);
|
||||
threadA.setName("thread-A");
|
||||
Thread threadB = new Thread(userB);
|
||||
threadA.setName("thread-B");
|
||||
|
||||
threadA.start();
|
||||
// sleep(2000);
|
||||
threadB.start();
|
||||
sleep(3000);
|
||||
log.info("main exit");
|
||||
}
|
||||
|
||||
private void sleep(int millis) {
|
||||
try {
|
||||
Thread.sleep(millis);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.example.advanced.trace.threadlocal.code;
|
||||
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
public class FieldService {
|
||||
|
||||
private String nameStore;
|
||||
|
||||
public String logic(String name) {
|
||||
log.info("저장 name={} -> nameStore={}", name, nameStore);
|
||||
nameStore = name;
|
||||
sleep(1000);
|
||||
log.info("조회 nameStore={}", nameStore);
|
||||
return nameStore;
|
||||
}
|
||||
|
||||
private void sleep(int millis) {
|
||||
try {
|
||||
Thread.sleep(millis);
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user