java多线程实例代码_Java多线程(一)概述及创建(示例代码)

支持多线程是Java语言的特性之一,多线程使程序可以同时存在多个执行片段,根据不同的条件和环境同步或异步工作。线程与进程的实现原理类似,但它们的服务对象不同,进程代表操作系统平台中运行的一个程序,而一个程序中将包含多个线程。

进程:

通常将正在运行的程序成为进程,现在计算机基本都支持多进程操作,比如使用计算机可以边上网,边听音乐,然而计算机上只有一块CPU,实际上,并不能同时运行这些进程,CPU实际上是利用不同时间片段去交替执行每个进程,由于转换速度很快,使人感觉像是在同时运行。

线程:

在一个进程内部也可以执行多任务,可以将进程内部的任务称之为线程,线程是进程中的实体,一个进程可以拥有多个线程。

线程必须拥有父进程,系统没有为线程分配资源,它与进程中的其他线程共享该进程的系统资源。如果一个进程中的多个线程共享相同的内存地址空间,这就意味着这些线程可以访问相同的变量和对象,这让线程之间共享信息变得更容易。

线程的创建:

在Java语言中,线程也是一种对象,但并不是任何对象都可以成为线程,只有实现Runnable接口或者继承了Thread类的对象才能成为线程。以下是线程创建的两种方式:

(一)继承Thread类

1.常用方法:

Thread类中的常用方法包括start()、interrupt()、join()、run()方法等。其中start()和run()方法最常用,start()方法用于启动线程,run()方法为线程的主题方法,读者可以根据需要覆写run()方法。

2.构造方法:

publicThread();//默认构造方法,无参publicThread(Runnable target);//基于Runable对象的构造方法,将线程的业务逻辑交由参数所传递的Runnable对象去实现publicThread(ThreadGroup group, Runnable target);//ThreadGroup类表示一组线程,基于Runnable对象和线程分组对象的构造方法publicThread(String name);//指定线程名称的构造函数,参数name将作为新创建的线程对象的名称publicThread(ThreadGroup group, String name);//指定线程组别和线程名称publicThread(Runnable target, String name);//基于Runnable对象并指定线程名称的构造方法publicThread(ThreadGroup group, Runnable target, String name);//指定线程组别、名称和Runnable对象public Thread(ThreadGroup group, Runnable target, String name,long stackSize);//指定线程分组、名称、Runnable对象和堆栈大小

3.实例:

在Java语言中要实现线程功能,可以继承java.lang.Thread类,这个类已经具备了创建和运行线程的所有必要架构,通过覆写Thread类中的run()方法,以实现用户所需要的功能,实例化自定义的Thread类,使用start()方法启动线程。

/*** 继承Thread类创建SimpleThread线程类,该类将创建的两个线程

* 同时在 控制台输出信息,从而实现两个任务输出信息的交叉显示*/

public class SimpleThread extendsThread {//构造方法,参数为线程名称

publicSimpleThread(String name) {

setName(name);

}//覆盖run()方法

public voidrun() {int i = 0;while (i++ < 5) {try{

System.out.println(this.getName() + "执行步骤" +i);

sleep(1000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}public static voidmain(String[] args) {

SimpleThread thread1= new SimpleThread("线程1");

SimpleThread thread2= new SimpleThread("线程2");

thread1.start();

thread2.start();

}

}

执行结果

20180113101943450997.png

(二)实现Runnable接口

实现Runnable接口的类就可以成为线程,Thread类就是因为实现了Runnable接口所以才具有了线程的功能。Runnable接口只有一个方法就是run()方法,实现Runnable接口后必须覆写run()方法。

public class Thread implementsRunnable {}public interfaceRunnable {

public abstract voidrun();

}

从本质上来讲,Runnable是java语言中用以实现线程的接口,任何实现线程功能的类都必须实现这个接口。Thread类就是因为实现了该接口,所以继承Thread的类才具有了相应的线程功能。

虽然可以使用继承Thread类的方式实现线程,但是由于在java语言中,只能继承一个类,如果用户定义的类已经继承了其他类,就无法再继承Thread类,也就无法使用线程,于是java语言为用户提供了java.lang.Runnable接口,实现这个接口和继承Thread类具有相同的效果在实例化一个Thread对象时,可以传入一个实现Runnable接口的对象作为参数,Thread类会调用Runnable对象的run()方法,继而执行run()方法中的内容。

实例:

/*** 创建SimpleRunnable类,该类实现了Runnable接口,并在run()方法中

* 每间隔0.5秒,在控制台输出一个"*"字符,直到输出15个"*"字符。*/

public class SimpleRunnable implementsRunnable {//覆写run()方法

public voidrun() {int i = 15;while (i-- >= 1) {try{

System.out.print("*");

Thread.sleep(1000);

}catch(InterruptedException e) {

e.printStackTrace();

}

}

}public static voidmain(String[] args) {

Thread thread1= new Thread(new SimpleRunnable(), "线程1");

thread1.start();

}

}

执行结果

20180113101943758626.png

本文内容多参考书本知识,随笔记下来学习分享且方便以后查看。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值