当前位置: 技术问答>java相关
同一个包,在不同文件中的类如何互相访问
来源: 互联网 发布时间:2017-04-29
本文导语: 两个类,都是实现线程的,一个是运行并完成特定任务,另一个是负责在前一个线程结束的时候关闭它,两个在同一个包里面,分属于两个不同的类文件,请问,我在第二个线程如何实现关闭第一个线程?(其实就是...
两个类,都是实现线程的,一个是运行并完成特定任务,另一个是负责在前一个线程结束的时候关闭它,两个在同一个包里面,分属于两个不同的类文件,请问,我在第二个线程如何实现关闭第一个线程?(其实就是怎么去访问第一个类文件中的类)
|
c中先实例化类b,然后对这个实例进行操作。不过这样好像有点循环的味道在里面了,不知道行不行。
|
三个类放在同一个目录中,甚至放在同一个文件中,一个类声明为public即可.
不需互相import.
class A {
Object isWindowReady = new Object();
Frame frame = null;
public static void main(String[ ] args) {
A o = new A();
if(true) {
new CreateWindow2(o).start();
} else { // I would prefer this approach
new CreateWindow(o).start();
new CloseWindow(o).start();
}
}
}
class CreateWindow extends Thread {
A o = null;
public CreateWindow(A o) {
this.o = o;
}
public void run() {
synchronized(o.isWindowReady) {
o.frame = new JFrame();
o.isWindowReady.notify();
}
}
}
class CreateWindow2 extends Thread {
A o = null;
public CreateWindow2(A o) {
this.o = o;
}
public void run() {
new CloseWindow(o).start();
synchronized(o.isWindowReady) {
o.frame = new JFrame();
o.isWindowReady.notify();
}
}
}
class CloseWindow extends Thread {
A o = null;
public CloseWindow(A o) {
this.o = o;
}
public void run() {
synchronized(o.isWindowReady) {
if(o.frame == null ) {
try{
o.isWindowReady.wait();
}catch(InterruptedException e) {}
}
o.frame = null;
}
}
}
不需互相import.
class A {
Object isWindowReady = new Object();
Frame frame = null;
public static void main(String[ ] args) {
A o = new A();
if(true) {
new CreateWindow2(o).start();
} else { // I would prefer this approach
new CreateWindow(o).start();
new CloseWindow(o).start();
}
}
}
class CreateWindow extends Thread {
A o = null;
public CreateWindow(A o) {
this.o = o;
}
public void run() {
synchronized(o.isWindowReady) {
o.frame = new JFrame();
o.isWindowReady.notify();
}
}
}
class CreateWindow2 extends Thread {
A o = null;
public CreateWindow2(A o) {
this.o = o;
}
public void run() {
new CloseWindow(o).start();
synchronized(o.isWindowReady) {
o.frame = new JFrame();
o.isWindowReady.notify();
}
}
}
class CloseWindow extends Thread {
A o = null;
public CloseWindow(A o) {
this.o = o;
}
public void run() {
synchronized(o.isWindowReady) {
if(o.frame == null ) {
try{
o.isWindowReady.wait();
}catch(InterruptedException e) {}
}
o.frame = null;
}
}
}