×

java多线程编程 多线程 多线程编程

JAVA多线程编程的几种表示方法?什么是JAVA的多线程

admin admin 发表于2022-07-07 03:24:12 浏览120 评论0

抢沙发发表评论

JAVA多线程编程的几种表示方法


创建线程有两种方法:继承Thread类和实现Runnable接口。

方法一:继承 Thread 类,覆盖方法 run(),我们在创建的 Thread 类的子类中重写 run() ,加入线程所要执行的代码即可。下面是一个例子:
public class MyThread extends Thread {
int count= 1, number;
public MyThread(int num) {
number = num;
System.out.println(“创建线程 “ + number);
}
public void run() {
while(true) {
System.out.println(“线程 “ + number + “:计数 “ + count);
if(++count== 6) return;
}
}
public static void main(String args) {
for(int i = 0; i 《 5; i++) new MyThread(i+1).start();
}
}

方法二:实现 Runnable 接口
Runnable 接口只有一个方法 run(),我们声明自己的类实现 Runnable 接口并提供这一方法,将我们的线程代码写入其中,就完成了这一部分的任务。但是 Runnable 接口并没有任何对线程的支持,我们还必须创建 Thread 类的实例,这一点通过 Thread 类的构造函数public Thread(Runnable target);来实现。下面是一个例子:
public class MyThread implements Runnable {
int count= 1, number;
public MyThread(int num) {
number = num;
System.out.println(“创建线程 “ + number);
}
public void run() {
while(true) {
System.out.println(“线程 “ + number + “:计数 “ + count);
if(++count== 6) return;
}
}
public static void main(String args) {
for(int i = 0; i 《 5; i++) new Thread(new MyThread(i+1)).start();
}
}
两种方法各有千秋,可以灵活运用。

什么是JAVA的多线程


一、 什么是多线程:

我们现在所使用操作系统都是多任务操作系统(早期使用的DOS操作系统为单任务操作系统),多任务操作指在同一时刻可以同时做多件事(可以同时执行多个程序)。

  • 多进程:每个程序都是一个进程,在操作系统中可以同时执行多个程序,多进程的目的是为了有效的使用CPU资源,每开一个进程系统要为该进程分配相关的系统资源(内存资源)

  • 多线程:线程是进程内部比进程更小的执行单元(执行流|程序片段),每个线程完成一个任务,每个进程内部包含了多个线程每个线程做自己的事情,在进程中的所有线程共享该进程的资源;

  • 主线程:在进程中至少存在一个主线程,其他子线程都由主线程开启,主线程不一定在其他线程结束后结束,有可能在其他线程结束前结束。Java中的主线程是main线程,是Java的main函数;

二、 Java中实现多线程的方式:

  • 继承Thread类来实现多线程:

  • 当我们自定义的类继承Thread类后,该类就为一个线程类,该类为一个独立的执行单元,线程代码必须编写在run()方法中,run方法是由Thread类定义,我们自己写的线程类必须重写run方法。

    run方法中定义的代码为线程代码,但run方法不能直接调用,如果直接调用并没有开启新的线程而是将run方法交给调用的线程执行

    要开启新的线程需要调用Thread类的start()方法,该方法自动开启一个新的线程并自动执行run方法中的内容


结果:

java多线程的启动顺序不一定是线程执行的顺序,各个线程之间是抢占CPU资源执行的,所有有可能出现与启动顺序不一致的情况。

CPU的调用策略:

如何使用CPU资源是由操作系统来决定的,但操作系统只能决定CPU的使用策略不能控制实际获得CPU执行权的程序。

线程执行有两种方式:

1.抢占式:

目前PC机中使用最多的一种方式,线程抢占CPU的执行权,当一个线程抢到CPU的资源后并不是一直执行到此线程执行结束,而是执行一个时间片后让出CPU资源,此时同其他线程再次抢占CPU资源获得执行权。

2.轮循式;

每个线程执行固定的时间片后让出CPU资源,以此循环执行每个线程执行相同的时间片后让出CPU资源交给下一个线程执行。

希望对您有所帮助!~


什么叫多线程下载


简单地说,多线程下载技术就是使用多个连接分别下载软件不同部分的下载方式。多线程下载技术最大的优点就是能够充分地利用调制解调器的数据传输能力,从而达到在最短的时间内将一个软件下载过来的目的。
通常可供下载软件的服务器分配给每个连接的数据带宽是一定的,如果这个带宽比调制解调器的带宽大,那么单个的连接也能够满足调制解调器的数据接收需求而使下载速度达到最大。但是实际上,服务器分配给每个连接的带宽通常要小于调制解调器的数据吞吐能力,因此
常常出现宽路跑单车的现象。虽然调制解调器的数据接收指示灯是亮着的,但是实际上传进来的数据流密度却很小。
如果把单线程下载比作采用单车运货,那么多线程下载工具就相当于一个车队。开始下载过程以后,这个车队的每台车装载软件的不同部分,然后同时往回开。由于调制解调器提供的路足够宽,所以这些车能够并排地开回来,这样跑一回就可以将软件全部装回来了。从实际过程来看,既然服务器分配给每个连接的带宽是有限的,那么我争取几个连接来下载同一个软件的不同部分,就相当于扩大了下载过程所能够使用的带宽。所以,多线程下载节省的时间常常以几倍计,具体表现就是下载的速度相当快。例如网络蚂蚁的最新版本,采用5个线程、使用56K调制解调器来下载,在不限制数据流量的情况下,通常能够达到7K每秒的下载速度。
也许大家会认为,网络蚂蚁所使用的多线程技术简直就是多线程下载技术的极致了,其实不然。这种多线程下载技术离真正的多线程下载技术的极点还有一段距离呢!
通过简单的分析就不难明白这一点。
网络蚂蚁的多线程都是针对同一个服务器的,确定了下载链接指向的服务器并建立了连接以后,几只蚂蚁到软件所在的同一个服务器上分别去拥抱要下载的软件的不同部分,然后再往用户的计算机中拖。这种下载方式
有一个致命的弱点,就是一旦这个目标服务器出现繁忙,那么无论是几只蚂蚁,其工作都将受到影响,导致整个下载速度变慢。网络蚂蚁使用的这种多线程技术实际上是一种
单目标的多线程技术。
真正高级的多线程下载技术,是从不同的服务器上下载同一个软件的不同部分,这种多线程技术可以称为多目标多线程技术。采用这种最新的多线程下载技术,即使众多的目标服务器中以一个或者几个临时遇到
繁忙,其余的服务器依旧能够提供较高的下载速度,而当速度较快的线程结束下载的时候,原来繁忙的服务器就可能空闲下来,这时相应的线程就可以充分利用调制解调器已经变得宽裕的带宽资源高速下载。
显然,多目标多线程下载技术要比但目标多线程下载技术在档次上高一个级别,在实际使用中更便于保证提供较高的下载速度。
-多线程编程