当前类实现了runnable接口,现在需要从该类的某方法中调用自己的run方法并成功开启新线程,应该如何实现?
时间: 2024-01-21 12:17:42 浏览: 28
你可以在该类的某个方法中,新建一个Thread对象,并将该类的实例作为参数传递给该Thread对象,然后调用该Thread对象的start()方法即可开启新线程并执行该类的run方法。
示例代码如下:
```java
public class MyRunnable implements Runnable {
public void run() {
// 线程执行的操作
}
public void startNewThread() {
Thread thread = new Thread(this);
thread.start();
}
}
```
在startNewThread方法中,新建了一个Thread对象,并将该类的实例作为参数传递给Thread的构造函数,然后调用thread对象的start方法即可启动新线程并执行该类的run方法。
相关问题
一个实现runnable和自定义接口的类中,可以使用该类的a方法调用该类的run方法并达到开启新线程分效果吗?
可以实现开启新线程的效果,具体实现方式如下:
1. 在类中定义一个实现了Runnable接口的内部类,并在内部类中重写run方法。
2. 在类中定义一个自定义接口,并在接口中定义一个方法。
3. 在类中定义一个a方法,该方法中通过新建一个Thread对象来启动内部类的run方法,并在该方法中调用自定义接口中的方法。
4. 在调用类中,实例化该类,并调用a方法即可。
实现代码如下:
```java
public class MyClass {
// 定义一个实现Runnable接口的内部类
private class MyRunnable implements Runnable {
@Override
public void run() {
// 执行需要在新线程中运行的代码
// ...
}
}
// 定义一个自定义接口
public interface MyInterface {
void onThreadStart();
}
// 定义一个a方法
public void a(MyInterface callback) {
// 创建一个新的线程并启动
Thread thread = new Thread(new MyRunnable());
thread.start();
// 调用自定义接口中的方法
callback.onThreadStart();
}
}
```
在调用类中,实例化MyClass对象并调用a方法即可实现在新线程中运行代码的效果:
```java
MyClass myClass = new MyClass();
myClass.a(new MyClass.MyInterface() {
@Override
public void onThreadStart() {
// 新线程启动后执行的代码
// ...
}
});
```
继承runnable的类如何调用run方法并开启新线程
继承 Runnable 接口的类需要创建一个 Thread 对象,并将其作为参数传递给 Thread 构造函数。然后调用 Thread 对象的 start() 方法,它会自动调用 Runnable 对象的 run() 方法并启动一个新线程。
示例代码如下:
```java
public class MyRunnable implements Runnable {
public void run() {
System.out.println("MyRunnable running");
}
}
public class Main {
public static void main(String[] args) {
MyRunnable myRunnable = new MyRunnable();
Thread thread = new Thread(myRunnable);
thread.start();
}
}
```
以上代码中,MyRunnable 类实现了 Runnable 接口,重写了 run() 方法。在 Main 类中,先创建了 MyRunnable 对象 myRunnable,然后通过它创建了一个 Thread 对象 thread,并将 myRunnable 作为参数传递给 Thread 构造函数。最后调用 thread 的 start() 方法,启动新线程并自动调用 myRunnable 的 run() 方法。