java线程基础

来源:互联网 发布:淘宝号改后台有危害吗 编辑:程序博客网 时间:2024/05/29 12:57

1、线程简析

       现在的操作系统是多任务操作系统,多任务即是多个进程,进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程,多线程是实现多任务的一种方式,线程是指进程中的一个执行流程,一个进程中可以运行多个线程。线程也称作轻量级进程。

       多任务同时进行,在单核系统是不是真正意义上的同时,在线程之间实际上轮换执行,多核系统才能实现    

2、定义线程

(1)扩展java.lang.Thread类,重写run()方法。

(2)实现java.lang.Runnable接口,重写run()方法。

3、实例化线程

(1)如果是扩展java.lang.Thread类的线程,则直接new即可。

(2)如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:

         Thread(Runnable target) 
         Thread(Runnable target, String name)
         Thread(ThreadGroup group, Runnable target)
         Thread(ThreadGroup group, Runnable target, String name) 
         Thread(ThreadGroup group, Runnable target, String name, long stackSize)

4、启动线程

在线程的Thread对象上调用start()方法,而不是run()或者别的方法。

在调用start()方法之前:线程处于新状态中,新状态指有一个Thread对象,但还没有一个真正的线程。

在调用start()方法之后:发生了一系列复杂的事情

启动新的执行线程(具有新的调用栈);

该线程从新状态转移到可运行状态;

当该线程获得机会执行时,其目标run()方法将运行。

注意:对Java来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。

3、代码实现(实现java.lang.Runnable接口

实现Runnable接口

package com.xxx.util;/** * Created with IntelliJ IDEA. * Date: 15-3-24 * Time: 下午4:14 * To change this template use File | Settings | File Templates. */public class Multiplication implements Runnable{    private int num;    public  Multiplication(int num){        this.num = num;    }    @Override    public void run() {        for(int i=1;i<10;i++) {            System.out.printf(Thread.currentThread().getName() + ":%d*%d=%d\n", num, i, num * i);        }    }}

main函数

package com.xxx.util;/** * Created with IntelliJ IDEA. * Date: 15-3-24 * Time: 下午3:57 * To change this template use File | Settings | File Templates. */public class Main {    public static void  main(String[] args){        for(int i=1;i<10;i++){            Multiplication multiplication = new Multiplication(i);            Thread thread = new Thread(multiplication);            thread.start();        }    }}



 

0 0
原创粉丝点击