JAVA线程训练
我的类名设置为ThreadTest02。
package com.edu.cn;
public class ThreadTest02 {
public static void main(String[] args) { //总的class
Object obj = new Object();//这是一个总的大类
// 启动两个线程
Thread1 t1 = new Thread1(obj);
Thread2 t2 = new Thread2(obj);
t2.start();
t1.start();
}
}
class Thread1 extends Thread
{ //第一个线程extend
private Object obj;
public Thread1(Object obj)
{
this.obj = obj;
}
public void run()
{
// 加锁
synchronized (obj)
{
// 打印1-52
for (int i = 1; i < 40; i++)
{
System.out.print(i);
// if (i % 2 == 0) //模2等于零。
// {
obj.notifyAll();//唤醒进程
try
{
obj.wait(); //字面意思
}
catch (InterruptedException e)
{
e.printStackTrace();
}
//}
}
}
}
}
class Thread2 extends Thread {
private Object obj;//仍然是private
public Thread2(Object obj)
{
this.obj = obj;
}
public void run()
{
synchronized (obj)
{
// 打印A-Z
for (int i = 0; i <26;i++)
{
System.out.print((char) ('a' + i));
// 唤醒其它线程
obj.notifyAll();
try
{
obj.wait();
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
我采用了交替打印的方法,打印26个字母和数字
关键点:响应和等待