Java自定义线程类详解

需积分: 31 2 下载量 83 浏览量 更新于2024-08-18 收藏 9.2MB PPT 举报
"这篇教程是关于Java中自定义线程类的使用,通过创建一个名为`thread2`的子类扩展Thread类来实现。在`thread2`类中,定义了一个Thread类型的成员变量和一个字符串变量,并重写了构造函数和start()方法。构造函数接收一个字符串参数并赋值给成员变量,start()方法则创建一个新的线程实例并启动它。这个教程可能是《全新计算机应用技术丛书》中的一部分,该书由薛亮编著,涵盖了广泛的Java技术,包括基础语法、类和接口、多线程机制等。" 在Java编程中,多线程是重要的概念,允许程序同时执行多个任务,提高效率和响应速度。自定义线程类是创建和管理线程的一种方式,这里通过扩展Thread类来实现。当一个类扩展Thread,可以直接创建该类的对象并调用它的start()方法来启动新线程。在这个例子中,`thread2`类的start()方法实际上创建了一个新的Thread实例(使用this作为runnable目标),然后调用了这个新实例的start()方法,这样就启动了线程。 Java语言有以下几个关键特点: 1. **跨平台性**:Java的跨平台性得益于Java虚拟机(JVM)。Java源代码编译成字节码后,可以在任何支持JVM的平台上运行,无需重新编译。这是因为JVM屏蔽了不同操作系统和硬件之间的差异,使得Java程序具有高度的可移植性。 2. **面向对象**:Java是完全面向对象的编程语言,支持类、接口、封装、继承和多态等特性。面向对象编程使得代码更加模块化,易于维护和扩展。 3. **安全性**:Java设计时考虑了安全性,从语言级别到运行时都有相应的安全机制。例如,Java的数据类型是封装的,防止直接访问内存,编译时进行类型检查,运行时有类加载器和安全策略来确保代码安全。 4. **健壮性**:Java有严格的异常处理机制,可以捕获和处理运行时错误,增强了程序的健壮性。 5. **高性能**:虽然Java是解释执行的,但通过JIT(Just-In-Time)编译器,Java程序可以获得接近原生代码的性能。 6. **动态性**:Java允许程序在运行时加载和修改类,提供了良好的适应性和灵活性。 在《Java实用教程》中,可能还会详细介绍如何编写线程安全的代码,处理并发问题,如同步、锁机制,以及如何使用ExecutorService和Future等高级并发工具。此外,其他章节会涉及Java的I/O技术、数据库连接、网络编程、XML处理、Servlet等核心和进阶技术。通过学习这些内容,开发者可以全面掌握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 上传