62,629
社区成员
发帖
与我相关
我的任务
分享package 11;
//两个线程一个打印a-z,一个线程打印A-Z
public class ThreadPrint {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Object obj=new Object();
//新建实例,并启动线程
Thread1 t1=new Thread1(obj);
Thread2 t2=new Thread2(obj);
t1.start();
t2.start();
}
//线程第一步
class Thread1 extends Thread
{
//新建一个代码块进行同步
private Object obj;
public Thread1(Object obj)
{
this.obj=obj;
}
//线程第二步
//重写run()方法
public void run()
{
//要进行同步代码块
synchronized(obj)
{
for(int i=0;i<26;i++)
{
System.out.println((char)('a'+i)+" ");
obj.notifyAll();
try
{
if(i!=25)
{
//当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常
obj.wait();
}
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
//创立第二个线程
class Thread2 extends Thread
{
private Object obj;
public Thread2(Object obj)
{
this.obj=obj;
}
public void run()
{
synchronized(obj)
{
for(int i=0;i<26;i++)
{
System.out.println((char)('A'+i)+" ");
obj.notifyAll();
try
{
if(i!=25)
{
obj.wait();
}
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
}
package com.jrj.test;
//两个线程一个打印a-z,一个线程打印A-Z
public class ThreadPrint {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
Object obj=new Object();
//新建实例,并启动线程
Thread1 t1=new ThreadPrint().new Thread1(obj);
Thread2 t2=new ThreadPrint().new Thread2(obj);
t1.start();
t2.start();
}
//线程第一步
class Thread1 extends Thread
{
//新建一个代码块进行同步
private Object obj;
public Thread1(Object obj)
{
this.obj=obj;
}
//线程第二步
//重写run()方法
public void run()
{
//要进行同步代码块
synchronized(obj)
{
for(int i=0;i<26;i++)
{
System.out.println((char)('a'+i)+" ");
obj.notifyAll();
try
{
if(i!=25)
{
//当线程在活动之前或活动期间处于正在等待、休眠或占用状态且该线程被中断时,抛出该异常
obj.wait();
}
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
//创立第二个线程
class Thread2 extends Thread
{
private Object obj;
public Thread2(Object obj)
{
this.obj=obj;
}
public void run()
{
synchronized(obj)
{
for(int i=0;i<26;i++)
{
System.out.println((char)('A'+i)+" ");
obj.notifyAll();
try
{
if(i!=25)
{
obj.wait();
}
}
catch(InterruptedException e)
{
e.printStackTrace();
}
}
}
}
}
}
实例化内部类 需要通过当前类的实例化去调用内部类的实例方法。