【JAVAEE】java_4_线程

  • 多线程的创建

    1. 创建类继承Thread重写run方法,创建对象,调用对象的start方法

    2. 实现Runnable接口的类,实现Runnable中的run方法,创建对象,将这个对象作为参数传到Thread类的构造器中创建Thread类的对象,通过Thread类调用run方法

      (在开发中优先使用实现Runnable方式,因为①单继承方式存在局限性,而接口可以同时实现多个②实现的方式更适合来处理多个线程存在共享数据的方式,可以把一个实现Runnable的对象放在多个Thread中)

    3. 实现Callable接口,可以借助FutureTask类得到返回值,可以抛出异常,支持泛型的返回值,实现call方法

      import java.util.concurrent.Callable;
      import java.util.concurrent.FutureTask;
      
      class a implements Callable {
          public Object call() throws Exception {
              return 1;
          }
      }
      
      class b {
          public static void main(String[] args) throws Exception {
              a x = new a();
              FutureTask f = new FutureTask(x);
              new Thread(f).start();
      
      
              Object r = f.get();
              System.out.println(r);
      
          }
      }
      
    4. 线程池

      ExecutorService service = Executors.newFixedThreadPool(20);
      //Runnable
      service.execute(new Runnable() {
          @Override
          public void run() {
      
          }
      });
      //Callable
      service.submit(new Callable<Object>() {
          public Object call() throws Exception {
      
              return 1;
          }
      });
      service.shutdown();
      
  • Thread中的方法

    • startrungetNamesetName

    • static Thread currentThread()

    • yeild:释放当前线程cpu执行权

    • B.join:A进入阻塞状态,直到B执行完,A阻塞状态结束

    • sleep:静态方法,当前线程阻塞指定的毫秒数

    • isAlive:判断当前线程是否存活

    • getPriority:获取优先级

    • setPriority:设置优先级

  • 不可以让已经start的线程再启动,否则会报异常

  • start作用为开启一个新线程并执行run方法

  • 解决线程安全问题的方法

    1. 同步代码块:synchronized(同步监视器) {同步代码块}

    2. 同步方法:public synchronized void show()同步监视器为thispublic static synchronized void show()同步监视器为class,任何一个类的对象都可以充当同步监视器

    3. lock锁

      ReentrantLock lock = new ReentrantLock()
      
      try {
          lock.lock()
          //代码
      } finally {
          lock.unlock()
      }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值