美文网首页
线程部分注意点

线程部分注意点

作者: Eve0 | 来源:发表于2017-09-11 17:29 被阅读0次
  • 如果synchronized方法是static的,那么当线程去访问该方法的时候,它锁住的不是synchronized方法所在的对象,而是synchronized方法所在的对象对应的Class对象。因为Java中无论一个类有多少个对象这些对象会对应一个唯一的Class对象。
    demo:
public class ThreadTest2 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        PPNums pNum = new PPNums();
        TThread t1 = new TThread(pNum);
        TThread2 t2 = new TThread2(pNum);
        t1.start();
        t2.start();
        
    }

}

class PPNums {
    public synchronized static void printNum() {
        for(int i = 0 ;i < 20;i++) {
            System.out.println("hello:"+i);
        }
    }
    public synchronized void printNum2() {
        for(int i = 0 ;i < 20;i++) {
            System.out.println("hahahhahah:"+i);
        }
    }
}
class TThread extends Thread{
    PPNums pNum;
    
    public TThread(PPNums pNum) {
        super();
        this.pNum = pNum;
    }

    @Override
    public void run() {
        // TODO Auto-generated method stub
        pNum.printNum();
    }
    
}
class TThread2 extends Thread{
    PPNums pNum;
    
    public TThread2(PPNums pNum) {
        super();
        this.pNum = pNum;
    }
    
    @Override
    public void run() {
        // TODO Auto-generated method stub
        pNum.printNum2();
    }
    
}

输出

hello:0
hahahhahah:0
hahahhahah:1
hahahhahah:2
hahahhahah:3
hahahhahah:4
hahahhahah:5
hahahhahah:6
hello:1
hello:2
hahahhahah:7
hello:3
hahahhahah:8
hello:4
hahahhahah:9
hello:5
hello:6
hello:7
hello:8
hello:9
hello:10
hello:11
hello:12
hello:13
hello:14
hello:15
hello:16
hello:17
hello:18
hello:19
hahahhahah:10
hahahhahah:11
hahahhahah:12
hahahhahah:13
hahahhahah:14
hahahhahah:15
hahahhahah:16
hahahhahah:17
hahahhahah:18
hahahhahah:19
  • 另一个会导致线程暂停的方法是Thread.sleep().它会导致线程睡眠指定的毫秒数,但线程在睡眠的过程中是不会释放掉对象的锁的。

相关文章

  • 线程部分注意点

    如果synchronized方法是static的,那么当线程去访问该方法的时候,它锁住的不是synchronize...

  • 线程注意点

  • Python 高级5

    多任务-线程、多线程执行、线程注意点、自定义线程、多线程-共享全局变量、互斥锁、死锁 1. 多任务-线程 <1>多...

  • 多线程

    线程的注意点 1.不要同时开太多的线程(1~3条线程即可,不要超过5条)2.线程概念(1)主线程 : UI线程,显...

  • javascript线程部分知识点

    单线程模型的含义 消息队列 event loop 定时器 setTimeout(); setInterval();...

  • 多线程和Lambda表达式

    7月20日知识点 今天的主要内容——线程 线程线程的基本概念线程与进程的区别线程的两种创建方式(掌握)注意线程两种...

  • iOS开发-子线程注意点

    1、在子线程中是不能进行UI 更新的,而可以更新的结果只是一个幻像:因为子线程代码执行完毕了,又自动进入到了主线程...

  • 子线程(NSThread)的注意点

    子线程的主任务一旦执行完毕,生命周期就结束了,即使是被强指针引用着,也无法再使用,跟僵尸差不多了。 除非启动子线程...

  • 2、Runnable

    创建线程要注意三点: 1、实现Runnable接口 2、重写run方法 3、创建线程对象,执行start方法启动线...

  • 线程池使用FutureTask时候需要注意的一点事

    8.4 线程池使用FutureTask时候需要注意的一点事 线程池使用FutureTask的时候如果拒绝策略设置为...

网友评论

      本文标题:线程部分注意点

      本文链接:https://www.haomeiwen.com/subject/yxzujxtx.html