Day26(多线程)(thread)
02:单线程就是从main开始 一条路走到结束 优点安全缺点运行慢。多线程就是一个程序有多条路径 使其一起执行多个方法。
03:cpu开启的执行的路程就是线程。多线程运行快。
05:程序运行原理分为 分时调度和抢占式调度 分时就是所有线程轮流使用cpu 平均分配使用cpu的时间 而抢占式就是让优先级高的线程使用cpu cpu线程切换的很快 人类感知不到。
06:在java程序里 main方法调用JVM JVM找cpu开一个线程 然后这个main方法从JVM到cpu的这个线程就叫做主线程。 多线程有个特点 就是当前面的方法走不通时 后面的方法可以继续走下去。而单线程不行。
07:创建并执行新线程有两个方法:1.声明是Thread的子类 2.实现Runnable的接口。
08:多线程的运行结果是个没有规则的运行结果。
12:运行方法main线程 名字就是main 而其他的线程也有名字 默认是:Thread-0或者Thread-1 开启线程的方法名:start()
13:thread.currentThread()方法是返回正在执行线程的对象名。
14:setname()可以给线程起名字 这样线程就不是默认名字了。
15:thread类方法中有个sleep()可以完成睡眠 按照指定的时间进行输出。
16:实现runnable接口的原理:方法run属于runnale子类的对象,然后这个子类对象作为参数传回给thread的构造器 说白了 还是用thread来创建的多线程。
17:实现runnale接口的好处:1.避免了单线程的局限性 2.降低耦合性。
18:匿名内部类也可以实现线程程序。
19:线程在运行状态与受阻塞状态(blocked)之间开来回切换,由cpu决定 不由人决定。 休眠状态可向受阻塞切换 而受阻塞不可切换到休眠(timed waiting) 休眠可以切换到运行 运行也可以切换到休眠sleep() 运行可切换到等待(waiting)wait() 等待状态可以切换到运行notify() 等待也可以切换到受阻塞状态 运行可以切换到死亡状态(terminated)run()
20:线程池原理:程序一开始 创建多个线程(这些线程都在线程池里 线程池就是list集合),在一个集合中 需要线程时就拿出来 不需要时就再回去。
21:线程池工厂类创建线程池 线程池拿出线程池自己的方法调线程 然后用线程去做任务。 使用线程池的方式:实现runnale的接口。线程池工厂类(Executors)中的静态方法static executorservice newfixedthreadpool(int 线程个数)来创建线程池(executorservice),接口实现类对象,调用方法submit(runnale r)提交线程执行任务。 Shutdown();是销毁池的方法 使其池内线程停止的方法 一般情况不用的。
22:实现线程还有个接口方法是:实现callable接口 用法与runnale一样 只是在调用submit的方法时 需要返回一个future类型的一个返回值。
JAVA基础篇
最新推荐文章于 2023-07-07 23:09:18 发布