实现多线程有2种方法
1.继承自Thread类,可以重写run()方法去覆盖去Thread中的run()方法
package thread;
import java.util.Date;
public class TestThreads extends Thread{
public int time;
public String user;
public TestThreads(int time,String user){
this.time=time;
this.user=user;
}
public void run(){
while(true){
try{
System.out.println(user+"休息"+time+"ms-"+new Date());
Thread.sleep(time);
}catch(Exception ee){
System.out.println(ee);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread t1=new TestThreads(10000,"jack");
Thread t2=new TestThreads(20000,"Mike");
t1.start();
t2.start();
//t1.setPriority(1);
//t2.setPriority(Thread.MAX_PRIORITY);//得到cpu执行的机会要大一点
}
}
2.实现Runnable接口并实现它的run()方法
package thread;
import java.util.Date;
public class TestRunnable implements Runnable {
public int time;
public String user;
public TestRunnable(int time,String user){
this.time=time;
this.user=user;
}
public void run(){
while(true){
try{
System.out.println(user+"休息"+time+"ms-"+new Date());
Thread.sleep(time);
}catch(Exception ee){
System.out.println(ee);
}
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread t1=new Thread(new TestRunnable(1000,"jack"));
Thread t2=new Thread(new TestRunnable(3000,"Mike"));
t1.start();
t2.start();
//t1.setPriority(1);
//t2.setPriority(Thread.MAX_PRIORITY);//得到cpu执行的机会要大一点
}
}
注:通过设置setPriority来设置调用线程对象的优先级
其中多线程之间是“并行交替”执行的,通过获取时间片来执行
如:
package thread;
public class TestThreadm extends Thread {
public int i;
/**
* @param args
*/
public TestThreadm(int i){
this.i=i;
}
public void run(){
for(int j=0;j<100;j++){
System.out.println("user"+i+"运行"+j);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
for(int m=0;m<5;m++){
new TestThreadm(m).start();
}
}
}
运行截取其中一小片
user0运行65
user0运行66
user0运行67
user0运行68
user0运行69
user0运行70
user0运行71
user4运行0
user4运行1
user4运行2
user4运行3
user4运行4
user4运行5
user4运行6
user4运行7
发现是交替执行的
注:如果设置优先级(可以控制执行的次序)那么优先级高的优先执行,且可以分派的cpu执行时间就多点(先执行),相反就少点(后执行)。你可以调用 Thread 类的方法 getPriority() 和 setPriority()来存取线程的优先级,线程的优先级界于1(MIN_PRIORITY)和10(MAX_PRIORITY)之间,缺省是5(NORM_PRIORITY)。
但是线程的优先级代表该线程的重要程度(不是绝对的),当有多个线程同时处于可执行状态并等待获得 CPU 时间时,线程调度系统根据各个线程的优先级来决定给谁分配 CPU 时间,优先级高的线程有更大的机会获得 CPU 时间,优先级低的线程也不是没有机会,只是机会要小一些罢了。
分享到:
相关推荐
结合实际工程, 在VC+ + 环境下通过采用创建事件对象来保持线程同步、利用两个监听函 数提高数据接收效率和可靠性等措施实现了多线程串行通信, 完成了工程前端数据采集器与后台 计算机之间的数据传输。
本篇文章将深入探讨如何在VB6中实现多线程以及涉及的关键知识点。 首先,我们要理解什么是线程。线程是操作系统分配CPU时间的基本单位,一个进程可以包含一个或多个线程。在单线程程序中,所有操作都按顺序执行;而...
### VB 实现多线程详解 #### 一、引言 多线程编程技术在现代软件开发中扮演着至关重要的角色。它可以帮助开发者构建出更高效、响应更快的应用程序。尽管Visual Basic (VB) 被认为是一种面向对象且易于学习的语言,...
本文将详细探讨PB(包括PB9、PB12.5以及PB.NET)实现多线程的方法。 一、PB9的多线程实现 在PB9中,虽然官方并未直接支持多线程,但开发者可以通过使用Windows API函数来实现。一种常见的方式是创建一个新的窗口类...
`ThreadProject`可能是包含多个Java文件的项目,这些文件展示了如何通过上述两种方式实现多线程。你可以通过运行这些示例来更好地理解和学习Java多线程的概念。例如,它可能包含一个继承`Thread`的类,一个实现`...
在Java中,实现多线程的两种主要方式分别是:**通过继承`Thread`类** 和 **实现`Runnable`接口**。下面将详细介绍这两种方式,并提供相应的示例程序。 #### 一、通过继承`Thread`类实现多线程 在Java中,可以通过...
参考了http://blog.csdn.net/gaoqiangz/article/details/6682895以后,弄了这个演示程序,以更为简单的方式实现了多线程,主线程与子线程的双向通讯:启动子线程、查询子线程状态,中止了线程等。原理请参考上述博文...
详细讲解了多线程的四种实现方式(Thread、线程池、Task、委托),以及各种实现方式的优缺点。相信对于想学习多线程的朋友是个不错的选择。
串口通信的实现,编程环境为C#,实现技术采用了多线程方式
标题中的“VB6用winsock实现多线程客户端登录与短信发送”指的是使用Visual Basic 6(VB6)编程语言,结合Winsock控件来构建一个支持多线程的客户端应用,该应用能够进行登录操作并能发送短信。Winsock是Windows上...
在本文中,我们将深入探讨如何在Visual C++ 6.0(简称VC6.0)环境下进行多线程编程,并结合Socket通信实现一个简单的客户端-服务器应用。标题提及的"vc6.0下实现 多线程编程的实例"正是我们要讨论的核心内容,而描述...
本文将详细介绍如何在VB6中实现多线程,并提供两种实用的方法来帮助开发者更好地理解和掌握多线程编程。 #### 二、多线程简介 多线程是指在单个进程中创建并运行多个独立执行单元的技术。每个线程可以并发执行不同...
总的来说,全局变量在实现多线程通信时提供了一种简单但不总是最佳的途径。在实际开发中,我们需要根据项目需求和性能考虑,谨慎选择适合的线程同步和通信机制。MFC提供了丰富的工具和类来帮助我们处理这些问题,但...
在VS2008环境下编译的这个项目,采用了一种特定的多线程实现方式。值得注意的是,mongoose 6.7及更高版本可能已经改变了多线程的实现方法,因此理解旧版代码对于升级或迁移至关重要。 **mongoose的多线程使用** 1....
1. 克服了Java的单继承限制,允许类同时继承其他类和实现多个接口。 2. 提高了代码的复用性,因为`Runnable`对象可以被多个线程共享。 3. 更好的符合面向对象设计原则,因为线程任务(`Runnable`)与线程本身(`...
在STM32上实现多线程,通常会借助实时操作系统(RTOS)如RT-Thread。 RT-Thread是一个轻量级、开源的实时操作系统,它为STM32等微控制器提供了强大的多任务管理能力。通过创建和调度线程,RT-Thread使得开发者可以...
通过分析提供的压缩包文件名称`vbThreadNew`,我们可以猜测这是一个包含VB多线程实现的源代码示例,可能提供了一种新的线程创建和管理方式,以提高稳定性和性能。学习和研究这个源码,可以帮助我们更好地理解和实践...
在标题"Shell 脚本实现多线程的代码"中,我们关注的重点是如何在Shell脚本中实现多线程操作,这通常是为了提高程序的执行效率,让多个任务可以同时运行。 描述中提到的是一个具体的实现案例,即用Shell脚本来创建并...
三、实现多线程上传 1. 使用AsyncTask:Android提供了一个内置的异步任务类AsyncTask,它可以轻松地在后台线程执行任务并在UI线程更新结果。不过,由于AsyncTask的限制(如线程池大小),对于大量并发任务,可能不是...
本文将深入探讨如何在Halcon12中结合Visual Studio 2013实现多线程技术,这对于提升图像处理速度和优化资源利用率至关重要。 首先,多线程是现代软件开发中的一个重要概念,它允许程序在同一时间执行多个独立的任务...