进程
- 给每个程序提供的独立封闭的环境,里面有各种资源和线程
区别
- 同进程下的线程可以共享资源,进程之间无法直接共享资源
使用Thread类来定义工作
Thread thread=new Thread(){
@Override public void run() {
super.run();
}
};
使用Runable来定义工作
Runnable runnable =
new Runnable() {
@Override
public void run() {
while (flag) {}
}
};
Thread thread=new Thread(runnable);
工厂方法
ThreadFactory threadFactory=new ThreadFactory() {
int count=1;
@Override public Thread newThread(@NonNull Runnable r) {
count++;
return new Thread(r,count+"");
}
};
Thread thread=threadFactory.newThread(runnable);
Executor
Executor executor = Executors.newCachedThreadPool();
executor.execute(runnable);
- newCachedThreadPool()
初始0个线程,可以不断添加,用完后线程会暂时缓存,过段时间之后会回收 - newSingleThreadExecutor();
只能跑一个线程,放多个会排队进行 - Executors.newFixedThreadPool(5);
只能跑限定个数的线程,需要自己做资源回收
((ExecutorService)executor).shutdown();
Callable (可以看作有返回值的Runnable)
Callable<String> callable=new Callable<String>() {
@Override public String call() throws Exception {
return "string";
}
};
ExecutorService executor=Executors.newCachedThreadPool();
Future<String> future=executor.submit(callable);
String result=future.get();