java线程一

        1.线程和进程区别:

                a.操作系统调度的最小单元是线程

                b.在一个进程里可以创建多个线程

                c.进程是系统资源分配的单位,线程是CPU调度的单位。

                d.进程之间不能共享资源,而线程共享所在进程的地址空间和其它资源。同时线程还有自己的栈和栈指针,程序计数器等寄存器。

                e.进程有自己独立的地址空间,而线程没有,线程必须依赖于进程而存在。

                f.进程切换的开销较大。线程相对较小。

        2.多线程的原因

                (1)更多的处理器核心

                (2)更快的响应时间

                (3)更好的编程模型

        4.Daemon类线程随着main方法执行完毕而终止,Java虚拟机中要是没有非Daemon线程,虚拟机需要退出。连带着所有Daemon类线程都需要立即终止,就算是Daemon类中的finally块也并不一定会执行。(在构建Daemon线程时,不能依靠finally块中的内容来确保执行关闭或清理资源的逻辑。)

        5.start():只要线程规划器空闲,应立即启动调用start()方法的线程

        6.中断可以理解为线程的一个标识位属性

                isInterrupted()来进行判断是否被中断

                其他线程调用线程的interrupt()方法对其进行中断操作

        7.等待/通知机制

                1)使用wait()、notify()和notifyAll()时需要先对调用对象加锁。

                2)调用wait()方法后,线程状态由RUNNING变为WAITING,并将当前线程放置到对象的等待队列

                3)notify()或notifyAll()方法调用后,等待线程依旧不会从wait()返回,需要调用notify()或 notifAll()的线程释放锁之后,等待线程才有机会从wait()返回

                 4)notify()方法将等待队列中的一个等待线程从等待队列中移到同步队列中,而notifyAll()方法则是将等待队列中所有的线程全部移到同步列,被移动的线程状态由由等待状态变为阻塞状态

                5)从wait()方法返回的前提是获得了调用对象的锁。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值