thread与Runnable的对比
1、thread存在单继承局限;Runnable不存在单继承局限,并且可以方便多个线程同时处理一个对象。
2、thread实现了Runnable接口,重写run()方法。
3、多个线程操作同一个对象,叫做并发。遇到并发的情况,就需要线程同步,线程同步是一种排队等待机制,在一个队列中存在多个线程排队来依次操作同一个对象。
4、线程中断或死亡之后,无法再次启动。
5、jvm会等待用户线程结束运行,但不会等待守护线程结束。
6、锁机制,是为了解决和防止同一进程下多个线程相互竞争操作同一对象,导致数据紊乱。但是最终会降低程序执行的性能。
7、每个线程都有自己独立的工作内存,单独操作内存中的数据,每个线程对象都对应单独的一个锁,使用synchronized方法时,其他线程阻塞,当执行完毕synchronized方法或者代码块程序时,锁才释放掉,其他线程才可以排队进行数据操作。
8、lock与synchronized对比: lock针对代码块,synchronized针对代码块+方法。lock性能更好一些。
9、线程池好处: 节约了线程创建和销毁的时间与资源开销,线程更加方便管理,提升了响应性能。
10、线程池2个类:ExecutorServices 和 Executors.
不积跬步无以至千里,不积小流无以成江海!