Java自定义线程类详解

需积分: 13 215 下载量 58 浏览量 更新于2024-08-15 收藏 9.22MB PPT 举报
"这篇教程详细介绍了如何在Java中自定义线程类,通过创建一个名为`thread2`的子类来扩展`Thread`类。它包括一个`Thread`类型的成员变量和一个字符串变量,以及一个构造函数来初始化这两个变量。在`start()`方法中,通过创建一个新的线程实例并调用其`start()`方法来启动线程。教程还提到了Java语言的特性,如跨平台性、面向对象和安全性,并提供了Java环境配置、基础语法到高级特性的学习路径,涵盖了Java开发的多个方面,如图形处理、多线程、数据库技术、网络技术以及Servlet和XML技术等。" 在Java编程中,创建自定义线程类是为了更灵活地控制线程的行为。当默认的`Runnable`接口实现不能满足需求时,扩展`Thread`类是一种常见做法。`thread2`类的定义展示了如何做到这一点: ```java class thread2 extends Thread { Thread thread; // 定义一个Thread类型的成员变量 String str; // 构造函数,接收一个字符串参数 public thread2(String str) { this.str = str; } // 自定义的start()方法,用于启动线程 public void start() { thread = new Thread(this); // 创建一个新线程,将当前thread2实例作为目标 thread.start(); // 调用新线程的start()方法,开始执行run()方法 } } ``` Java的跨平台性得益于Java虚拟机(JVM),它在不同平台上提供了统一的字节码执行环境。面向对象特性则使得代码更加模块化,易于维护和重用。安全性是Java设计的重要原则,从语言级别到运行时,都有多种机制确保代码的安全执行。 整个教程涵盖了从基础到高级的Java知识,包括: - 第1章介绍Java环境的设置,包括JDK的下载和安装,以及配置环境变量。 - 第2章讲解Java基本语法,如变量、数据类型、运算符、流程控制等。 - 第3章深入类和接口的概念,以及类的继承和多态性。 - 第4章至第14章涉及Java的图形处理、用户界面、异常处理、I/O技术、数据库连接、网络安全、Servlet和XML处理等高级主题。 通过这个全面的教程,学习者可以逐步掌握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 上传