Java 线程

来源:互联网 发布:手机淘宝 国际版 编辑:程序博客网 时间:2024/06/05 08:59
线程在执行过程中,可以处于下面几种状态:
     就绪(Runnable):线程准备运行,不一定立马就能开始执行。
     运行中(Running):进程正在执行线程的代码。
     等待中(Waiting):线程处于阻塞的状态,等待外部的处理结束。
     睡眠中(Sleeping):线程被强制睡眠。
     I/O阻塞(Blocked on I/O):等待I/O操作完成。
     同步阻塞(Blocked on Synchronization):等待获取锁。
     死亡(Dead):线程完成了执行。
同步方法和同步代码块的区别是什么:
    在Java语言中,每一个对象有一把锁。线程可以使用synchronized关键字来获取对象上的锁。synchronized关键字可应用在方法级别(粗粒度锁)或者是代码块级别(细粒度锁)。

在监视器(Monitor)内部,是如何做线程同步的:

    监视器和锁在Java虚拟机中是一块使用的。监视器监视一块同步代码块,确保一次只有一个线程执行同步代码块。每一个监视器都和一个对象引用相关联。线程在获取锁之前不允许执行同步代码。
什么是死锁(deadlock):
     两个进程都在等待对方执行完毕才能继续往下执行的时候就发生了死锁。结果就是两个进程都陷入了无限的等待中。
如何确保N个线程可以访问N个资源同时又不导致死锁:
      使用多线程的时候,一种非常简单的避免死锁的方式就是:指定获取锁的顺序,并强制线程按照指定的顺序获取锁。因此,如果所有的线程都是以同样的顺序加锁和释放锁,就不会出现死锁了。
0 0
原创粉丝点击