package com.ws.thread;
import com.google.common.util.concurrent.ThreadFactoryBuilder;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.ThreadFactory;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class JavaTest {
public static void main(String[] args) {
Work work = new Work(1, 2);
Work work2 = new Work(2, 1);
ThreadFactory threadFactory = new ThreadFactoryBuilder().setNameFormat("ws-%d").build();
ThreadPoolExecutor executor = new ThreadPoolExecutor(5, 10, 60L, TimeUnit.SECONDS, new LinkedBlockingDeque<>(1024),threadFactory);
executor.execute(work);
executor.execute(work);
executor.execute(work2);
executor.execute(work2);
executor.execute(work);
executor.execute(work2);
executor.execute(work2);
executor.execute(work);
executor.execute(work2);
executor.execute(work);
executor.execute(work);
//ExecutorService service = Executors.newFixedThreadPool(10); 阿里巴巴代码规范不建议这样创建线程池
}
}
class Work implements Runnable{
int a ;
int b ;
public Work(int a , int b){
this.a = a;
this.b = b;
}
public void syn(){
synchronized (Integer.valueOf(a)){
System.out.println("锁住"+a);
System.out.println("1111111111");
synchronized (Integer.valueOf(b)){
System.out.println("锁住"+b);
}
}
}
@Override
public void run() {
syn();
}
}
线程死锁示例
最新推荐文章于 2022-08-15 11:58:43 发布