多线程
Posted hurriediy
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多线程相关的知识,希望对你有一定的参考价值。
多线程概述:
多线程是Java语言的高级特性之一,
其应用非常广泛,例如组件事件处理机制中,将程序组件与事件监听
绑定在一 起,当操作事件源时就会触发事件监听器
, 这是因为除了主线程在执行外,还有一个专门负责执行事
监听器的线程,这就是多线程的应用之一。
讲将线程之前我们需要先了解一 一下什么是进程,简单的说,在多任务操作系统中 ,每个独立执行的程序被
进程,也就是“正在执行的程序”
即能够同时执行多个应用程序,如我们接触最多的
Windows. Linux android等卖际上CPU在某一个时间点只能执行 个进程,计算机可以同时运行多个应用
是因为CPU会在极短的时间内来回切接执行操作系统负责对CPU等设备资源进行分配和管理。虽然这
某时刻只能做一 件事,但却能以极短的时间间隔交替执行多个进程,因而给人的感觉像是同时执行多个
程序
在一个进程中又包括一 个或多个线程,线程就是程序内部的一 条执行路线。在单线程程序中,程序代码都是
次执行,当main0方法调用了成员方法后,main0方法就必须等到成员方法返回才能继续往下书
大到两段程序代码同时运行的效果。如果想要在程序中实现多段代码同时运行1就需要创建多个
线程上所要运行的程序代码段,这就是多线程。
继承Thread类创建线程
方法名称 | 说明 |
Thread(String name) | 创建一个新的Thread对象 |
Thread(Runnable target) | 根据Runnable对象创建一个线程 |
Thread类的常用方法
说用
方法名标
long getido
获取当就优程的编号
Sain
getName0
获家当前线段的名称
int getPricnto
获取当前代程的代元级
vcd jcino
当前线控需要执行的代用部心类统入该方法当中,类似于
vod rnO
主线程的main方法
void seeplong mis)
在指定的毫秒数内让当前正在执行的线程休取。
void starto
启动线程,执行run0方法
返回该线程的字符串表示形式包括线程名称 优先级和
String toSring0
线程组
vold yieldo
暂停当前正在执行的线程对象并执行其他发程
上表中列出了Thread类的常甩方法,创建多线程时需要定义一个类继承Thread类,并重写Thread类中
的run0方法,而且新线程执行的代码必须写在run0方法中,如果想要启动新线程就需要调用start0方法,下面
通过一个示例宋演示使用 Thread类创建多线程。
示例
public class ThreadTest { public static void main(String[] args) { // TODO Auto-generated method stub MyThreadn mt=new MyThreadn(); mt.start(); for(int i=0;i<1000;i++){ System.out.println("main中的run()方法"+i+1); } } } class MyThreadn extends Thread{ public void run(){ for(int i=0; i<1000;i++){ System.out.println("MyThread中的run()方法"+i+1); } } }
启动钱程时心须调用sar0方法.不能直接调用run0方法,如果直接调用run(方法,虚拟机会认为是在调用类的成员方法,不会创建多线程,
实现Runnable接口创建线程:
10.3实现Runnable接口创建线程
上面的示例中演示了通过继承Thread类的方式实现多线程但是使用继承的方式实现线程有一定的局限性,因为awa中只支持单继承,当一个类继承了其他类之后就无法再继承Thread类创建线程。
为了避免这种局限性,Thread 类中提供了Thread(Runnable target)构造方法,该构造方法可以通过Runnable类型对象来创建一个线程对象。Runnable 是一个接口,该接口中只有一个抽象方法run(),通过实现Runnable接口的方式我们也可以创建多线程,下面示例演示了通过实现Runnable接口的方式创建多线程。
public class ThreadTest2 { public static void main(String[] args) { // TODO Auto-generated method stub Thread t=new Thread(new MyThread3()); t.start(); } } class MyThread3 implements Runnable{ public void run(){ for(int i=0;i<1000;i++){ System.out.println("好好学习,天天向上"+i); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }
以上是关于多线程的主要内容,如果未能解决你的问题,请参考以下文章