/* * 线程中的方法 * sleep()休眠 毫秒为单位 * yield()让出处理器时间 * join()所有线程等待调用join这个线程结束完了之后再执行 * interrupt()不适用于用于停止线程 设计初衷并不是用于停止线程 其中的isInterrupted()判断线程是否终止 * 停止线程使用“旗标”停止线程 boolean val=true; while(val){...} val=false; * InterruptedException 异常中断 * * //使用object 对象进行同步 // private final Object objlock = new Object(); // private int count = 10; // @Override // public void run() { // synchronized (objlock) { // while (count < 0) { // try { // // 当条件不满足时 将线程 wait set集合中 进行等待 不在竞争cup资源 // objlock.wait(); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // } // System.out.println(Thread.currentThread().getName() + "=" // + (count--)); // // 唤醒当前objlock所有被等待的线程 // objlock.notifyAll(); // } // } * * wait()/notify()/notifyAll() 都属于obj对象 (调用不是在同一次 同一个线程中进行操作的) * wait() 在某些情况不满足下 将线程放如waitset中 线程等待集合 * notify() 唤醒等待中的一条线程 * notifyAll() 唤醒当前等待上的所有线程 * * synchronized 作用域: * * 1、 在某个实例对象中 synchronized getMethod(){}可以阻止多个线程同时访问这个方法( * 如果一个对象有多个synchronized方法,只要一个线程访问了其中的一个synchronized方法, * 其它线程不能同时访问这个对象中任何一个synchronized方法 * )同一个对象 * * 2、每个实例对象 的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法; * * 3、是某个类的范围,synchronized static getMethod{}防止多个线程同时访问这个类中的synchronized static 方法。它可以对类的所有对象实例起作用。 * * */
更多关于synchronized http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.html
时间: 2024-11-03 21:54:55