多线程笔记——1

在学习多线程的时候首先我们要清楚一线问题:

1进程:系统分配资源和调度的独立单位,线程: 进程中独立运行的子任务

2多线程的实现方式  集成Thread类和实现Runnable接口

3线程的执行顺序与调用顺序无关的,start()方法会通知“线程规划器”,由它启动一个线程来执行run()方法

4Thread类其实也是实现的Runnable接口 其源码中定义为: class Thread implements Runnable

5“互斥区”“临界资源”指的是加锁的代码块

6println(i++)存在的线程安全问题,println是安全的,但是i++的执行是在println之前的

7currentThread()返回的是当前正在被哪个线程调用的信息

8isAlive() 是判断线程是否还活着,即已启动,尚未终止的线程

9sleep()是让当前线程休眠,getId()是获取线程的唯一标示

10 停止线程  Thread.stop() 暴力停止,释放锁后会产生不良后果,不建议使用。

                      interrupt,并不是停止,只是打了个停止的标记,但是线程还在 运行

                      判断线程的状态 this.interrupted执行后标志清除为false

                                                this.isInterrupted 不清除标志

                     使用异常法来终止线程.,即对当前线程的状态进行判断,如果标记为停止就抛出一个异常,终止线程

                     如果线程在sleep状态下被停止,则会抛出异常

                    使用return方法来停止线程

11暂停一个线程

suspend()暂停 resume唤醒  缺点独占资源

12 yield方法的作用是让线程放弃当前的cpu资源,但是可能刚放弃立马就获得

13 线程的优先级

     分为1~10这10个等级,若果不在这个范围,就会抛出IllegalArgumentException()

    jdk有三个常亮来定义优先级

             MIN_PRIORITY =1

            NORM_PRIORITY=5

           MAX_PEIORITY =10

14 守护线程

    最典型的就是gc

posted on 2018-09-24 10:12  计科wang  阅读(133)  评论(0编辑  收藏  举报