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();
静态代理
-
代理对象和被代理对象都要实现同一个接口
-
代理对象内部包含被代理对象的属性
代理的好处
-
代理对象可以做很多被代理对象做不了的事情或者不想做的事情
-
浙公网安备 33010602011771号