Thread(쓰레드)
Thread를 생성할 수 있는 방법에 대해 알아보고 동기화 할수 있는 전략에 대해 알아보자
Last updated
public static class ThreadTest implements Runnable {
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
// 메인 메서드에서 인스턴스 생성 방법
Thread t1 = new Thread(new ThreadTest()); // new Thread(Runnable target) 생성자 이용public static class ThreadTest2 extends Thread {
public void run() {
System.out.println(getName());
}
}
// 메인 메서드에서 인스턴스 생성 방법
Thread t1 = new ThreadTest2();public synchronized void add(int value){
this.count += value;
}public static synchronized void add(int value){
count += value;
}public void add(int value){
synchronized(this){
this.count += value;
}
}public static void log2(String msg1, String msg2){
synchronized(MyClass.class){
log.writeln(msg1);
log.writeln(msg2);
}
}public int add(int n1, int n2){
synchronized(this){
count++;
}
return n1+n2;
};public class AtomicInteger extends Number implements java.io.Serializable {
private volatile int value;
public final int incrementAndGet() {
int current;
int next;
do {
current = get(); next = current + 1;
}
while (!compareAndSet(current, next));
return next;
}
public final boolean compareAndSet(int expect, int update) {
return unsafe.compareAndSwapInt(this, valueOffset, expect, update);
}
}class Test {
static final int MAX = 100;
}// Java 9 - unmodifiableList
List<String> fruits = new ArrayList<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Cherry");
fruits = Collections.unmodifiableList(fruits);
// Java 9 - of
List<String> fruits = List.of("Apple", "Banana", "Cherry"); // [Apple, Banana, Cherry]
fruits.add("Lemon"); // UnsupportedOperationException
Map<Integer, String> fruits = Map.of(1, "Apple", 2, "Banana", 3, "Cherry"); // {1=Apple, 2=Banana, 3=Cherry}
fruits.put(4, "Lemon"); // UnsupportedOperationException
Set<String> fruits = Set.of("Apple", "Banana", "Cherry", "Apple"); // IllegalArgumentException
// Java 8 - Array
List<String> fruits = Arrays.asList("Apple", "Banana", "Cherry");
// Java 8 - unmodifiableList
List<String> fruits = Stream
.of("Apple", "Banana", "Cherry")
.collect(collectingAndThen(toList(), Collections::unmodifiableList));
// Guaba 라이브러리
import com.google.common.collect.ImmutableList;
List<String> fruits = ImmutableList.of("Apple", "Banana", "Cherry");
fruits.add("Lemon"); // UnsupportedOperationException