- public class Demo04_Synchronized {
- public static void main(String[] args) {
- final Printer p = new Printer();
- new Thread() {
- public void run() {
- while (true)
- p.pirnt1();
- }
- }.start();
- new Thread() {
- public void run() {
- while (true)
- p.pirnt2();
- }
- }.start();
- }
- }
- // 多个线程使用同一个东西时, 有可能出现线程安全问题
- class Printer {
- public synchronized void pirnt1() { // 同步方法, 使用this作为锁, 把整个方法中的代码都同步
- System.out.print("黑");
- System.out.print("马");
- System.out.print("程");
- System.out.print("序");
- System.out.print("员");
- System.out.print("\r\n");
- }
- public void pirnt2() {
- synchronized(this) {
- System.out.print("传");
- System.out.print("智");
- System.out.print("播");
- System.out.print("客");
- System.out.print("\r\n");
- }
- }
- }
复制代码 new Thread() {
public void run() {
while (true)
p.pirnt2();
}
}.start();
}
好处 p 不用继承thread类与实现runnable接口了
问题 1. final Printer p = new Printer(); 为什么是final的
问题 2. this 是什么
问题 3. 锁怎么回事 我的感觉如上实例 一个线程访问p 再来个线程他要看p有没有被使用 如果使用了就等待 这就是锁对不对
问题 4.public static synchronized void pirnt1() 锁的class对象 与this锁什么区别
问题 5.你们知道么 死锁 线程同步异步 线程通信notify() wait()(这有个问题notify唤醒的是那个线程 要想唤醒指定线程能做到不) 与 jdk对线程的支持
|