在java中如何防止从其它线程类运行run方法
2006-09-03 12:34
549 查看
MyThread类是一个线程类,代码如下
class MyThread extends Thread
{
public void run( )
{
System.out.println("hello world");
}
}
//运行这个run方法一般有三种方法
//1:使用MyThread.start()方法
//2: 使用Thread类
//3:在主线程中直接调用run方法
public class test
{
public static void main(String[] args) throws Exception
{
//第一种方法
MyThread myThread = new MyThread();
myThread.start();
//第二种方法
Thread thread = new Thread(myThread);
thread.start();
//第三种方法
myThread.run();
System.in.read();
}
}
有时需要禁止在主线程中直接调用run或是使用Thread方式调用run。从果要达到这个目标,可以将MyThread的run方法改写为如下形式
class MyThread extends Thread
{
public void run( )
{
if (Thread.currentThread() != this)
throw new IllegalStateException("线程调用错误(只能本线程类调用run方法)");
System.out.println("hello world");
}
}
其中Thread.currentThread()方法返回当前正在执行的线程,而在run方法中调用currentThread,表示正是由当前正在执行的线程类调用的run方法。如果当前正执行的线程类和当前的MyThread对象this不相等的话,就说明是其它的线程事例来调用的run方法。因此,抛出一个错误。
可在run方法中加下System.out.println(Thread.currentThread().getName());获得当前正在执行的线程名。
class MyThread extends Thread
{
public void run( )
{
System.out.println("hello world");
}
}
//运行这个run方法一般有三种方法
//1:使用MyThread.start()方法
//2: 使用Thread类
//3:在主线程中直接调用run方法
public class test
{
public static void main(String[] args) throws Exception
{
//第一种方法
MyThread myThread = new MyThread();
myThread.start();
//第二种方法
Thread thread = new Thread(myThread);
thread.start();
//第三种方法
myThread.run();
System.in.read();
}
}
有时需要禁止在主线程中直接调用run或是使用Thread方式调用run。从果要达到这个目标,可以将MyThread的run方法改写为如下形式
class MyThread extends Thread
{
public void run( )
{
if (Thread.currentThread() != this)
throw new IllegalStateException("线程调用错误(只能本线程类调用run方法)");
System.out.println("hello world");
}
}
其中Thread.currentThread()方法返回当前正在执行的线程,而在run方法中调用currentThread,表示正是由当前正在执行的线程类调用的run方法。如果当前正执行的线程类和当前的MyThread对象this不相等的话,就说明是其它的线程事例来调用的run方法。因此,抛出一个错误。
可在run方法中加下System.out.println(Thread.currentThread().getName());获得当前正在执行的线程名。
相关文章推荐
- 关于开发中如何防止死等程序导致其它任务运行不了方法
- 关于开发中如何防止死等程序导致其它任务运行不了方法
- 关于开发中如何防止死等程序导致其它任务运行不了方法
- 了解Java线程的start方法如何回调run方法
- 了解Java线程的start方法如何回调run方法
- 了解Java线程的start方法如何回调run方法
- 了解Java线程的start方法如何回调run方法
- Java线程的start方法如何回调run方法
- 了解java线程的start方法如何回调run方法
- java程序中,如何安全的结束一个正在运行的线程?
- Java线程的start方法回调run方法的操作技巧
- java如何实现多个线程并发运行
- Java线程中run和start方法的区别
- Java线程中run和start方法的区别
- java程序中,如何安全的结束一个正在运行的线程?
- 如何创建并运行java线程
- java线程的start和run方法解析
- java线程创建方法只有两个?NO! 异步计算的结果如何拿到?
- Java - 当一个线程进入一个对象的synchronized方法A之后,其它线程是否可进入此对象的synchronized方法B?
- 如何创建并运行java线程