多线程实现方式
Java多线程实现方式主要有四种:
-
继承Thread类。由于java单继承特性,缺点就是不能再继承其他类了,可扩展性差。Thread类自己本身就实现了Runable接口,只不过提供了更多的可用方法和成员而已。
实际开发中Thread和Runable差别不大,都可以用。非要说区别就是一个是类,一个是接口。但是并没有Runable比Thread更适合共享多线程资源的说法!只要是多线程就会有同步问题,资源最好都上锁!
-
实现Runable接口。接口是可多继承的,可扩展性好。
-
实现Callable接口。通过Future/FutureTask包装器,可以获取异步执行返回结果
-
线程池,易于管理,资源利用
启动线程的唯一方法就是通过start()方法,实例后调用start()方法启动,start之前记得先调用setName设置线程名称,这是一种规范。和直接调用run方法区别是:直接调用run就只是运行普通类的方法,jvm只有见到start会真正启动一个线程并让他进入就绪状态,什么时候运行由操作系统决定。
采用加锁机制实现同步,加锁资源同一时间只有一个线程能拥有并操作,就可以避免其他线程同时对资源操作而引起污染。