java 中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
1个回答
展开全部
【答案】:
有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用
thread 的run 方法,所以,我们往往使用Thread 子类,即new SubThread()。第二种调
用runnable 的run 方法。
有两种实现方法,分别是继承Thread 类与实现Runnable 接口
用synchronized 关键字修饰同步方法
反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处
于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出
真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停
下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资
源,除非被'挂起'的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同
时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应
在自己的Thread 类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应
该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()
重新启动线程。
有两种实现方法,分别使用new Thread()和new Thread(runnable)形式,第一种直接调用
thread 的run 方法,所以,我们往往使用Thread 子类,即new SubThread()。第二种调
用runnable 的run 方法。
有两种实现方法,分别是继承Thread 类与实现Runnable 接口
用synchronized 关键字修饰同步方法
反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处
于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出
真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停
下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资
源,除非被'挂起'的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同
时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应
在自己的Thread 类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应
该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()
重新启动线程。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询