package com.study.thread;
/**
*
* @author nirvana
*/
public class MyThreadPrinter {
public static void main(String[] args) {
MyLock lock = new MyLock();
Thread a = new Thread(new MyPrinter("A", "B", lock));
Thread b = new Thread(new MyPrinter("B", "C", lock));
Thread c = new Thread(new MyPrinter("C", "A", lock));
a.start();
b.start();
c.start();
lock.setHolder("A");
}
static class MyPrinter implements Runnable {
private String myName;
private String nextName;
private final MyLock lock;
public MyPrinter(String myName, String nextName, MyLock lock) {
this.myName = myName;
this.nextName = nextName;
this.lock = lock;
}
public void run() {
int count = 10;
while (count > 0) {
//
if (lock != null && lock.getHolder() != null && lock.getHolder().equals(myName)) {
synchronized (lock) {
System.out.println(myName);
count--;
lock.setHolder(nextName);
}
}
}
}
}
static class MyLock {
public MyLock() {
}
private String holder;
public String getHolder() {
return holder;
}
public void setHolder(String holder) {
this.holder = holder;
}
}
}
分享到:
相关推荐
50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念...
如果不使用Hibernate自带的分页,则采用什么方式分页? 62 71.16. hibernate中一对多配置文件返回的是什么? 63 71.17. hibernate拒绝连接、服务器崩溃的原因?最少写5个 63 71.18. Hibernate主键介绍 63 71.18.1. ...
【Java笔试面试题及答案解析】 ...以上是针对Java笔试面试题的相关知识点详解,涵盖了线程、构造函数、异常处理、接口、方法重写/重载、Struts框架、Servlet调试、Session使用、JSP标签和MVC模式等多个方面。
根据提供的文件信息,我们可以整理出以下关键的Java知识点: ...这些知识点涵盖了异常处理、静态变量、字符串常量池、线程同步、设计模式等多个方面,对于准备Java面试的人来说是非常有价值的复习材料。
### JAVA面试题集知识点解析 #### 1. Java与C++中的异常处理机制对比 Java中的异常处理机制是其安全性和健壮性的重要组成部分。在Java中,异常是指程序运行时发生的任何非预期事件,这些事件可能会导致程序无法...
### Java面试题解析 #### 1. 数据库连接池的工作机制 数据库连接池是一种用于管理数据库连接的技术。它预先创建多个数据库连接,并将其保存在一个池中。当应用程序需要访问数据库时,可以从池中获取一个已经建立好...
- 打印ABC:涉及线程同步和控制,可能用到Thread.sleep()、synchronized关键字等。 - 生产者消费者模型:使用队列数据结构,配合wait()、notify()方法实现。 7. **字符串操作优化**: - 反向输出字符串:不使用...
Java面试笔试题大汇总涵盖了Java语言的核心概念和关键特性,是面试者准备面试的重要参考资料。以下将详细解析其中提到的一些重要知识点: 1. **final, finally, finalize的区别**: - `final` 关键字用于声明变量...
此外,`Hashtable`是线程安全的,这意味着它可以同步地被多个线程访问,而`HashMap`不是线程安全的,如果在多线程环境中使用,需要手动同步。 ### 5. Collection vs Collections - `Collection`是Java集合框架中的...
50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念...
各种java面试题集,面试前必备哦, 1. Java基础部分 7 1、一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制? 8 2、Java有没有goto? 8 3、说说&和&&的区别。 8 4、在JAVA中如何跳出当前的多重嵌套...
50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念...
50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念...
50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本概念...
50、多线程有几种实现方法?同步有几种实现方法? 33 51、启动一个线程是用run()还是start()? . 33 52、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 33 53、线程的基本...
70、多线程有几种实现方法,都是什么?同步有几种实现方法,都是什么? 17 71、启动一个线程是用run()还是start()? 17 72、当一个线程进入一个对象的一个synchronized方法后,其它线程是否可进入此对象的其它方法? 18 73...