CodeLockTest
8302 단어 code
package Thread;
import junit.framework.Assert;
import org.junit.Test;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.locks.ReentrantLock;
/**
* Created by csophys on 15/7/14.
*/
public class CodeLockTest {
static int i = 1;
public static void getTargtValueWithoutSynchronized() throws InterruptedException {
//output current value
//System.out.println(i);
Assert.assertTrue(i == 1);
i++;
//
Thread.sleep(1);
i--;
}
public static void getTargtValue() throws InterruptedException {
//output current value
System.out.println(i);
Assert.assertTrue(i == 1);
i++;
//
Thread.sleep(1);
i--;
}
//
/*{
synchronized (this) {
}
synchronized (SynchronizedCodeTest.class){
}
}*/
/**
* , ,
*/
static ReentrantLock reentrantLock = new ReentrantLock();
public static void lockWithoutUnlock() {
reentrantLock.lock();
System.out.println(i);
}
public static void lockWithUnlock(){
reentrantLock.lock();
try {
System.out.println(i);
} catch (Exception e) {
e.printStackTrace();
}finally {
reentrantLock.unlock();
}
}
@Test
public void testMultipleThreadInvokeWithoutSynchornized() {
Executor executor = Executors.newFixedThreadPool(100);
for (int i = 0; i < 100; i++) {
executor.execute(new Runnable() {
public void run() {
try {
getTargtValueWithoutSynchronized();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
@Test
public void testMultipleThreadInvoke() {
Executor executor = Executors.newFixedThreadPool(100);
for (int i = 0; i < 100; i++) {
executor.execute(new Runnable() {
public void run() {
try {
getTargtValue();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
});
}
}
@Test
public void testTryLockWithoutUnlock() {
Executor executor = Executors.newFixedThreadPool(100);
for (int i = 0; i < 100; i++) {
executor.execute(new Runnable() {
public void run() {
lockWithoutUnlock();
}
});
}
}
@Test
public void testTryLockWithUnlock() {
Executor executor = Executors.newFixedThreadPool(100);
for (int i = 0; i < 100; i++) {
executor.execute(new Runnable() {
public void run() {
lockWithUnlock();
}
});
}
}
/*volatile , , 。 。*/
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
소스 코드가 포함된 Python 프로젝트텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.