多线程的创建
方法一
1.创建一个类继承thread类
2.重写thread类的run()
3.创建thread类的子类对象
4.通过此对象调用start():1.启动当前线程。2.调用当前run()
方法二
* 方式二
* 1.创建一个类实现runnable接口的类
* 2.实现runnable的抽象方法run();
* 3.创建实现类的对象
* 4.将此对象作为参数传输到thread类的构造器中,创建Thread类的对象
* 5.通过Thread类的对象调用start();
方法三
* 方式三:lock锁 jdk5.0
* 实例化Reentrantlock
* 调用锁定方法lock()
* 调用解锁方法unlock
方法四
* 线程池 * 1.提供指定线程数量的线程池 * 2.执行指定的线程操作。需要提供runnable接口或callable接口实现的类 * 3.关闭线程池 * 好处:提高响应速度 * 降低资源消耗 * 便于线程管理
Thread类中主要方法
* 1.start():启动当前线程,调用当前run()
* 2.ren():通常要重写将创建线程的执行体放入其中
* 3.currentTheard():返回当前执行当前代码的线程
* 4.getName():获取当前线程名
* 5.setName():修改当前线程名
* 6.yield():释放当前cpu的执行权
* 7.join():在线程A中调用线程B的join(),此时线程A处于堵塞状态,直到线程B执行完以后线程A结束阻塞状态。
* 8.stop():当执行这个方法是,强制结束当前线程(已过时不建议用)
* 9.sleep(long millitime):让当前方法睡眠"millitime"//毫秒,在睡眠时间线程处于阻塞状态
* 10.isAlive():判断线程是否存活
线程优先级
* 线程的优先级:
* 1.
* MAX_PRIORITY=10
* NORM_PRIOPITY=5(默认优先级)
* MIN_PRIOPITY=1
* 2.获取和设置
* getPriopity()
* setPriopity()
两种创建方式的比较
* 开发中:优先选择:实现runnable接口的方式
* 原因: 1.实现方式没有单继承的限制
* 2.实现方式更适合来处理多个线程共享数据的情况
* 联系:源码中Thread类也实现了runnable