Java自定义线程类详解

需积分: 9 2 下载量 36 浏览量 更新于2024-08-23 收藏 9.2MB PPT 举报
"这篇教程详细介绍了如何在Java中自定义线程类,通过创建一个名为`thread2`的子类来扩展`Thread`类。在`thread2`类中,定义了一个`Thread`类型的成员变量`thread`以及一个字符串变量`str`。构造函数接收一个字符串参数,并将其赋值给`str`。`start()`方法被重写,用于创建一个新的`Thread`实例并启动它。此外,提到了一个关于Java编程的实用教程,涵盖了从基础语法到高级特性,包括多线程、异常处理、输入输出和网络技术等多个主题。Java语言的特点包括跨平台性、面向对象和安全性,这些特性使得Java成为开发网络应用程序的理想选择。" 在Java中,自定义线程类通常是为了实现特定的并发行为。当需要控制线程的行为或者添加额外的逻辑时,我们会扩展`Thread`类。在这个示例中,`thread2`类创建了一个内部的`Thread`实例并在`start()`方法中启动它。这样,当调用`start()`时,实际上是启动了内部创建的`Thread`对象,该对象将执行`thread2`类的`run()`方法。 Java环境配置是学习Java编程的第一步,包括下载Java Development Kit (JDK) 并设置环境变量,例如`JAVA_HOME`、`PATH`和`CLASSPATH`,以便能够编译和运行Java程序。了解这些基本设置对于开发者来说至关重要。 在Java语言中,跨平台性是其核心特性之一,得益于Java虚拟机(JVM)。JVM允许Java程序在任何支持JVM的平台上运行,无需重新编译。这意味着开发者只需要编写一次代码,就可以在Windows、Linux、Mac OS等不同操作系统上运行。 面向对象编程(OOP)是Java的另一个关键特性,它强调使用对象来表示现实世界中的概念。Java提供了类、对象、封装、继承和多态等OOP概念,使得代码更易于理解和维护,同时也促进了代码重用。 安全性是Java的重要组成部分,从语言设计到运行时都有相应的机制保障。比如,Java的数据类型都是封装的,防止直接访问内存,这提高了语言级的安全性。编译时和运行时的检查则确保了代码符合安全规范,防止了某些潜在的安全问题。类加载器则在运行时负责加载和验证类,确保它们来自可信的源。 整个教程内容丰富,不仅覆盖了Java的基础,还包括了高级主题,如多线程(在这里有具体的自定义线程类的例子)、输入输出、数据库交互、网络编程等,这些都是Java开发者需要掌握的关键技能。通过学习这些内容,开发者可以全面理解Java编程,并能构建复杂的应用系统。

#include<iostream> #include<Windows.h> #include <iomanip> #include <math.h> using namespace std; float x=0; DWORD WINAPI Thread1(LPVOID lpParameter); DWORD WINAPI Thread2(LPVOID lpParameter); void f1() { int i=10; while(i--) cout<<"i="<<i<<endl; } void f2() { int j=20; while(j--) cout<<"j="<<j<<endl; } int main() { cout<<"主线程已启动"<<endl; //f1(); //f2(); HANDLE hThread1=CreateThread(NULL,0,Thread1,NULL,0,NULL);//启动线程1 HANDLE hThread2=CreateThread(NULL,0,Thread2,NULL,0,NULL);//启动线程2 CloseHandle(hThread1);//关闭线程1 CloseHandle(hThread2);//关闭线程2 int i=25; while(i--) { cout<<"主线程运行中"<<endl; Sleep(100);//延时0.1s } //CloseHandle(hThread1);//关闭线程1 //CloseHandle(hThread2);//关闭线程2 system("pause");//暂停防止程序退出 return 0; } DWORD WINAPI Thread1(LPVOID lpParameter) { // cout<<"线程1已启动"<<endl; // //int i=5; // //while(i--) // //{ // //cout<<"线程1运行中"<<endl; //cout<<"i1="<<i<<endl; //Sleep(100);//延时0.1s // //} int i=0; while(i<101) { x=x+0.02; i++; Sleep(100);//延时0.1s } return 0; } DWORD WINAPI Thread2(LPVOID lpParameter) { // cout<<"线程2已启动"<<endl; // //int i=100; // //while(i--) // //{ // //cout<<"线程2运行中"<<endl; ////cout<<setw(i*10)<<"*"<<endl; //cout<<"i2="<<i<<endl; //Sleep(100);//延时0.1s // //} int i=0; while(x<=2.0) { //cout<<setw(30*sin(x))<<"*"<<endl; cout<<x<<endl; Sleep(100);//延时0.1s } return 0; }在所给线程代码的基础上,修改: (1)一个线程负责数的变化,从0变到4*3.14159,步长为0.02; (2)一个线程负责读取系统时间; (3)一个线程负责将数的正弦、余弦与正要值计算并显示,同时显示系统时间; (4)步长停顿100ms。 要求:用console程序。

2023-05-30 上传