java学习——109.多线程

现在的操作系统均支持多线程。

多线程即将一个进程可以划分为多个线程,这样可以提高效率。

Java支持多线程,实现起来也不复杂。

有两种方式实现多线程:继承Thread类和实现Runnable接口。

今天介绍第一种,Thread类。

1、Thread类

此类为Java类库,可直接调用。它具有封装线程对象的能力,声明了创建、管理、控制线程对象的方法。其部分方法声明如下:

public class Thread extends Object implements Runnable

{

public Thread() ;//构造方法

public Thread(String name);//构造方法重载,name指定线程名

public Thread(Runnable target);//构造方法重载,target指定线程的目标对象

public Thread(Runnable target, Stringname);//构造方法重载

public void run();//描述线程操作的线程体

publicfinal String getName();//返回线程名

publicfinalvoid setName(String name) ;//设置线程名

publicstaticint activeCount();//返回当前活动线程个数

publicstatic Thread currentThread();  //返回当前执行线程对象

public Sting toString();//返回线程的字符串信息

public void start();//启动已创建的线程对象

}

2、简单示例

声明继承Thread类的奇数/偶数序列线程。

其完整代码如下:

public class ThreadLearn extends Thread{

int start,end;//序列的起点,终点

public ThreadLearn(String s,int start,int end) {

super(s);//继承Thread类,调用其带参的构造方法,为线程指定名字

this.start=start;

this.end=end;

}

public void run() {//实现线程类的方法,此方法由线程调用,有几个线程就可以调用多少次

System.out.println("当前线程是:"+Thread.currentThread().getName());//调用线程类的方法,返回当前线程名

while(start<=end) {

for(int i=1;i<=10;i++) {

System.out.print(start+" ");

start=start+2;

}

System.out.println();

}

}

public static void main(String args[]) {

System.out.println("当前线程是:"+Thread.currentThread().getName());//调用线程类的方法,返回当前线程名

Thread odd=new ThreadLearn("奇数",1,50);//创建线程,名字为“奇数线程”,即会输出1-50之间的奇数

Thread even=new ThreadLearn("偶数",2,50);//创建线程,名字为“偶数线程”,即会输出2-50之间的奇数

odd.start();//线程启动

even.start();//线程启动

}

}

其运行结果如下:

再运行一次,其运行结果如下:

仔细看这两个运行结果,会发现,其输出结果并不一样。

但输出的数字是一样的。

因为线程是并发执行的,并不会等一个线程执行完了另一个线程才开始执行。

本例中,main方法中创建了两个线程,odd和even,这两个线程在执行的时候是同时进行的,所以每一次运行时,数据的输出顺序会不一样,但输出结果数据肯定是一样的,只是顺序会变化 。

另,在每一个程序中,都会有一个默认的main线程,在程序开始执行时,都是执行此线程。

(0)

相关推荐

  • Java 浅析 Thread.join()

    概要 本文分三个部分对Thread.join()进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示 ...

  • Java学习-多线程

    多线程 任务(Task).进程(Process).线程(Thread) 进程的创建 1.继承Thread类 自定义线程类继承Thread类 重写run()方法,编写线程执行体 创建线程对象,调用sta ...

  • Java学习-注解和反射

    注解 java.Annotation Annotation的作用:可以呗其他程序读取 Annotation的格式 注解是:@注释名 在代码中存在,还可以添加一些参数 ​@SuppressWarning ...

  • 100道Java并发和多线程基础面试题大集合(含解答),这波面试稳了~

    # 前言 这篇文章主要是对多线程的问题进行总结的,因此罗列了100个多线程的问题. 这些多线程的问题来源于各大网站,可能有些问题网上有.可能有些问题对应的答案也有.也可能有些各位网友也都看过,但是本文 ...

  • Java学习-Mybatis

    Mybatis Maven依赖: <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependenc ...

  • Java 学习笔记

    您对计算机(电脑)有了解吗? 计算机组成 系统软件 直接和硬件交互的软件叫系统软件,例如 win7.win8.Linux.mac等操作系统 应用软件 通常在运行在系统软件上,也就是在系统软件上开发的软 ...

  • Java学习-126.2048代码

    本篇帖的是按钮的代码. 因为按钮比较多,包括菜单项的动作,为了区分,我用了两个内部类来实现这两部分代码. //本类是Game_2048类的内部类,用来实现上.下.左.右四个按钮,以及重新开始和退出游戏 ...

  • Java学习—125.2048代码

    本篇帖的是部分动作代码. 每个方法前都有注释说明本方法的功能. //随机选取一个位置,并填入数字2.如果此位置中已有数字,那么换一个位置. public void rule(){ x=ran.next ...

  • Java学习—124.2048代码

    游戏的主界面的代码在类game_2048中. 本类主要包括两个方面: 一是布局. 二是动作,按钮的动作. 其中,动作又有菜单动作,按钮动作.而按钮动作又有多方面,在下一篇的代码中会有注释说明. 本篇帖 ...

  • Java学习—123.2048小游戏

    好久又没出现了,还好后台也没几条信息,我也不至于很愧疚,只是人气不太旺盛,好尴尬 最近稍微有点忙,也是自己放松了一下,哈哈...... 抱歉一下,之前给我信息的各位亲,由于时间有点久,我就不一一回复了 ...