线程和多线程,死锁。

关于这个问题,专业认识已经总结。http://www.importnew.com/21866.html

synchronized关键字可以修饰对象,方法,或者是代码块。
每一个对象都有一个对象锁。一旦触发这个关键字,那么对象就被锁住了,不可以再访问含有synchronized的语句,单数可以访问非synchronized的语句。

sleep()和wait()的区别,可能前者到点了就会自动唤醒线程,并且作用对象是线程。后者必须要this.notify()唤醒,作用对象是 一个对象。

public synchronized char pop(char c){}

生成随机大写字母c=(char)(Math.random()26+'A'); //没错这里就是26,因为random的范围是>=0&&<1 所以加上‘A’之后就从A到Z。

每个对象都有一个锁来控制同步访问,Synchronized关键字可以和对象的锁交互,来实现同步方法或同步块。sleep()方法正在执行的线程主动让出CPU(然后CPU就可以去执行其他任务),在sleep指定时间后CPU再回到该线程继续往下执行(注意:sleep方法只让出了CPU,而并不会释放同步资源锁!!!);wait()方法则是指当前线程让自己暂时退让出同步资源锁,以便其他正在等待该资源的线程得到该资源进而运行,只有调用了notify()方法,之前调用wait()的线程才会解除wait状态,可以去参与竞争同步资源锁,进而得到执行。(注意:notify的作用相当于叫醒睡着的人,而并不会给他分配任务,就是说notify只是让之前调用wait的线程有权利重新参与线程的调度);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章