进程和线程学习笔记

进程

  • 给每个程序提供的独立封闭的环境,里面有各种资源和线程

区别

  • 同进程下的线程可以共享资源,进程之间无法直接共享资源

使用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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值