Java中的多线程

Java中的多线程

创建线程方法1--继承Thread类

线程启动后并不是立即执行,而是交给CPU安排调度。

  • 创建一个线程类继承Thread类

  • 重写run()方法

  • 实例化类并调用start()方法启动线程

 

创建线程方法2--实现Runnable接口

  • 创建线程类实现Runnable接口

  • 实现run()方法

  • 创建Runnable接口实现类对象

  • 创建线程对象,并传入Runnable接口实现类对象,调用start()方法启动线程

基于Java中单继承的局限,推荐使用方法2,也有利于同一个对象被多个线程调用。如下所示:

// 一份资源
TestThreadRunnable tr = new TestThreadRunnable();

//多个代理
new Thread(tr, "老师").start();
new Thread(tr, "小明").start();
new Thread(tr, "小红").start();

 

创建线程方法3--实现Callable接口

  • 实现Callable接口,需要返回值类型

  • 重写call方法,需要抛出异常

  • 创建目标对象

  • 创建执行服务 ExecutorService es = Executors.newFixedThreadPool(1);

  • 提交执行 Future<?> rs = es.submit(t1);

  • 获取结果 Object result = rs.get();

  • 关闭服务 es.shutdownNow();

 

静态代理

  • 代理对象和被代理对象都要实现同一个接口

  • 代理对象内部包含被代理对象的属性

 

代理的好处

  • 代理对象可以做很多被代理对象做不了的事情或者不想做的事情

  • 被代理对象可以专注于做自己的事情

posted @ 2021-04-20 16:50  木木彡坚持  阅读(60)  评论(0)    收藏  举报