java多线程

来源:互联网 发布:激光发射器软件 编辑:程序博客网 时间:2024/06/05 15:10

方法一: synchronized
必须保证同步中只能有一个线程在执行。

好处: 解决了多线程的安全问题。弊端: 多个线程需要判断锁,较为消耗资源。

1、同步代码块

synchronized(对象)    {        //需要被同步的代码    }

对象如同锁,持有锁的线程可以在同步中执行。
没有持有锁的线程即使获取了CPU的执行权,也进不去,因为没有获取锁。

同步的前提:
a、必须要有两个或者两个以上的线程;
b、必须是多个线程使用一个锁。

2、同步函数
同步函数使用的锁是(this);
如果同步函数被静态修饰后,使用的锁是该类对应的字节码文件对象(类名.class),该对象的类型是class.

3、多线程通信 (等待 唤醒机制)
等待唤醒机制使用的必须是同一个锁才有效。

wait()notify()notifyAll()

4、在JDK1.5以后,提供了多线程进行了升级
将同步Synchronized替换成现实Lock操作。
将Object中的wait, notify ,notifyAll,替换成了Condition对象。该对象可以在Lock锁中进行获取

5、stop 方法已经过时。
只有通过run方法结束来停止线程。
当线程处于冻结状态时,无法读取标记(flag)发生全阻塞时,可以通过 interrupt()方法恢复到运行状态来,这样就可以操作标记让线程结束。

原创粉丝点击