多任务处理
2025/6/19...大约 1 分钟Java
只需要继承Thread,重写run方法,把新线程要做的事写在run方法中,创建线程对象,开启新线程, 内部会自动执行run方法
或者定义类实现Runnable接口,创建自定义的Runnable的子类对象,创建Thread对象, 传入Runnable,调用start()开启新线程, 内部会自动调用Runnable的run()方法
Thread代码简单,但如果已经有了父类,就不能用这种方法
Runnable代码复杂,即使自己定义的线程类有了父类也没关系,因为有了父类也可以实现接口,而且接口是可以多实现的。坏处是不能直接使用Thread中的方法需要先获取到线程对象后,才能得到Thread的方法,代码复杂
同步
安全
多线程并发操作同一数据时, 就有可能出现线程安全问题,使用同步技术可以解决这种问题, 把操作数据的代码进行同步, 不要多个线程一起操作
Vector 是线程安全的,ArrayList是线程不安全的,StringBuffer是线程安全的,StringBuilder是线程不安全的,Hashtable是线程安全的,HashMap是线程不安全的
