threadnotifydemo2.java

来自「JAVA的一些基础教程」· Java 代码 · 共 51 行

JAVA
51
字号
public class ThreadNotifyDemo2{
	Object a = new Object();
	public void 写文件(String 内容){
		synchronized(a){
			System.out.println("进入写文件函数的线程:"+ Thread.currentThread().getName() + "开始等待");
				try{
					a.wait();
					System.out.println("线程:"+ Thread.currentThread().getName() + " 醒来并再次获取了锁");
					Thread.sleep(1000*5);
					System.out.println("线程:"+ Thread.currentThread().getName() + " 休息了5秒");
				}catch(Exception e){}
				for(int i=0; i< 内容.length(); i++)
					System.out.print(内容.charAt(i));
			System.out.println("\n退出写文件函数的线程:"+ Thread.currentThread().getName() + "\n");
		}
	}
	public void 唤醒(){
			a.notifyAll();
			System.out.println("唤醒线程唤醒了等待队列里面的线程后再SLEEP5秒");
			try{
				Thread.sleep(1000*5);
			}catch(Exception e){}
			System.out.println("唤醒线程SLEEP了5秒后");
	}
	public void 创建三个线程()  throws Exception{
		Runnable r1 = new Runnable(){
			public void run(){
				写文件("学JAVA其实是件很容易的事,只要你用心学,花时间");
			}
		};
		Runnable r2 = new Runnable(){
			public void run(){
				唤醒();
			}
		};

		Thread 线程A = new Thread(r1,"线程A");
		Thread 线程B = new Thread(r1,"线程B");
		Thread 线程C = new Thread(r2,"线程C");
		线程A.start();
		线程B.start();
		Thread.sleep(1000);
		线程C.start();
	}

	public static void main(String arg[]) throws Exception{
		ThreadNotifyDemo2 demo = new ThreadNotifyDemo2();
		demo.创建三个线程();
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?