[size=medium]1.实现线程的方法,分别是继承Thread类与实现Runnable接口
public class MyThread1 extends Thread {
public MyThread1(String name){
super(name);
}
public MyThread1(Student st){
st.setName("peony");
}
public void run(){
for(int i= 0; i<=10;i++){
try {
sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(this.getName()+"我在执行!");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
public class MyThread2 implements Runnable {
public void run(){
for(int i= 0; i<=10;i++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("我在执行!");
}
}
}
public class Test {
public static void main(String[] args) {
Student st= new Student();
//=============
MyThread1 t1 = new MyThread1(st);
t1.start();
//=============
MyThread2 t2 = new MyThread2();
new Thread(t2).start();
}
}
2. wait和sleep的区别
wait会释放当前线程锁,并将线程放入任务调度队列,只有被notify时线程才能被唤醒。
sleep线程只是进入睡眠一段时间,时间一到继续执行,不会释放锁。
3.stop 和interrupt区别
一般情况下我们用stop去停止线程,但是如果线程处于I/O等操作时候会进入堵塞状态,stop是无法真正停止线程的,这时候可以使用interrupt强行中断线程的执行。
4.java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用?
答:有两种实现方法,分别是继承Thread类与实现Runnable接口用synchronized关键字修饰同步方法反对使用stop(),是因为它不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们。结果很难检查出真正的问题所在。suspend()方法容易发生死锁。调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被"挂起"的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁。所以不应该使用suspend(),而应在自己的Thread类中置入一个标志,指出线程应该活动还是挂起。若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。
6.同步和异步有何异同,在什么情况下分别使用他们?举例说明。
http://deony2jacob1314.iteye.com/blog/1846006
7.启动一个线程是用run()还是start()?答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。
8.
9.
分享到:
相关推荐
本文将深入探讨C#多线程编程的知识,包括线程的创建、同步与通信、线程安全以及代理和委托在多线程中的应用。 首先,线程是程序执行的独立路径,每个线程都有自己的执行上下文。在C#中,我们可以使用`System....
这份“JAVA多线程编程技术PDF”是学习和掌握这一领域的经典资料,涵盖了多线程的全部知识点。 首先,多线程的核心概念包括线程的创建与启动。在Java中,可以通过实现Runnable接口或继承Thread类来创建线程。创建后...
本章节将详细介绍嵌入式Linux多线程编程的基本概念、线程的创建、同步和互斥、线程属性、多线程实验等方面的知识点。 1. 线程基本概念 在Linux系统中,线程是进程内独立的一条运行路线,处理器调度的最小单元,也...
### 线程编程知识点详解 #### 线程编程概览 线程编程是现代软件开发中的核心技能之一,特别是在多任务操作系统中,通过合理地管理线程,可以显著提高程序的执行效率和响应性。线程是操作系统能够进行运算调度的...
总之,Linux多线程编程手册为开发者提供了一套全面的指导,帮助他们理解多线程编程的理论知识,掌握相关技术的使用方法,并且能够应用于实际的软件开发中。通过合理地使用多线程编程,可以显著提升应用程序的响应...
### C#多线程编程详解 #### 一、引言 在现代软件开发中,多线程编程是一项至关重要的技术,它...本书适合所有希望提高自己在多线程编程方面技能的C#开发者阅读,无论是初学者还是有经验的专业人士都能从中获益匪浅。
本书是关于多线程编程的权威指南,它涵盖了编写高效、安全的多线程程序所需的所有重要知识点。 描述中提到,这是一本“经典多线程文档”,表明了其在行业内的地位和影响力。书中描述了多线程之间的交互和通信机制,...
本书不仅涵盖了多线程编程的基础知识,还深入介绍了多线程编程中的高级主题,如锁的使用和线程同步的策略。作者通过详细的步骤说明和代码示例,帮助读者理解和掌握多线程编程的各个方面。对于希望提高C#多线程编程...
在IT领域,多线程编程是...综上所述,学习Symbian的多线程编程不仅涉及基本的线程概念,还包括线程创建、同步、调度、异常处理以及资源管理等多个方面。这些文档将为开发者提供深入理解和实践这一关键技能的必要知识。
### QT多线程编程知识点详解 #### 一、QT多线程编程背景及支持机制 **QT** 是一种广泛使用的跨平台图形用户界面(GUI)框架,它基于 **C++** 开发,允许开发者轻松构建复杂的图形用户界面系统。为了满足用户在不同...
标题所指的知识点是“多线程编程的入门教程”,这意味着本文档是为那些刚接触多线程编程的初学者提供的基础教学材料。通过这个标题,我们可以推断文档内容会从最基础的多线程概念讲起,逐渐过渡到实际编程技巧和例子...
总结,VC多线程编程涉及线程的创建、同步、通信、生命周期管理等多个方面,理解并熟练掌握这些知识点,能够帮助开发者构建高效、稳定的多线程应用。在实际开发中,还需要考虑线程池、异步操作等高级特性,以优化系统...
在C#编程中,多线程是一个至关重要的概念,特别是在现代计算环境中,它能极大地提升应用程序...在文档"C#多线程编程实例实战.doc"中,应详细介绍了这些知识点并提供了具体示例,帮助读者深入理解和实践C#的多线程编程。
《Java多线程编程实战指南-...通过《Java多线程编程实战指南-核心篇》,你可以深入了解Java并发编程的各个方面,提升在高并发场景下的编程能力。书中的案例和练习将帮助你更好地掌握理论知识,并将其应用于实际项目中。
3. **线程通信**:线程间通信是多线程编程的重要方面,可以使用`WaitForSingleObject`、`WaitForMultipleObjects`等函数,或者C++11引入的条件变量(`std::condition_variable`)来实现。 4. **线程局部存储**:在...
综上所述,《多线程编程指南》涵盖了从理论到实践的多线程编程各个方面的知识,旨在帮助开发者理解和掌握多线程编程的核心概念和技术要点,从而能够有效地设计和实现高性能的多线程应用程序。无论是初学者还是有一定...
在本节中,我们将详细介绍 Delphi 多线程编程的基本概念、创建线程、线程的生命周期、线程同步、线程安全等方面的知识。 一、创建线程 在 Delphi 中,创建线程可以通过继承 TThread 类并覆盖 Execute 方法来实现。...
本文将详细探讨Linux下的多线程编程相关知识。 首先,了解线程的基本概念是学习多线程编程的基础。线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。在传统的Unix系统中,...