您的位置:首页 > 编程语言 > Java开发

【Java基础】线程基本教程

2015-12-21 00:00 946 查看
摘要: 创建创建
sleep()
join()
interrupt()
yield()

线程是一个程序中的不同的执行的路径, 每一个分支都叫线程。

进程只是一个静态的概念,在我们机会里面其实运行都是线程。进程(主线程)包含很多线程。

Java创建线程有2种方式:

1、实现Runnable接口(推荐):

class Runnable1 implements Runnable{

@Override
public void run() {
for (int i = 0; i < 100; i++) {
System.out.println("in Runnable1 i="+i);
}
}

}

2、继承Thread类:

class Runnable2 extends Thread{

@Override
public void run() {
for (int i = 0; i < 200; i++) {
System.out.println("in Runnable2 i="+i);
}
}

}

线程的调用:

//实现Runnable接口的调用方式
Runnable1 r=new Runnable1();
Thread t=new Thread(r);
t.start();//启动一个线程   //问题1:启动一个线程,让线程去执行run()方法中的代码,与直接去调用run()是有巨大的区别的

//调用继承extends Thread类的线程
Runnable2 r=new Runnable2();
r.start(); //启动一个线程

线程睡眠sleep:

Thread.sleep(1000); //表示当前线程睡眠1000毫秒
//如果写在主线程中,就是让主线程睡眠;反之如果写在子线程run方法中,就是让子线程睡眠

package org.zhanghua.javase.demo.thread;

/**
* 线程演示sleep
* @author Edward
*
*/
public class SleepTest{

public static void main(String[] args) {
System.out.println("sleep前:"+System.currentTimeMillis());
try {
Thread.sleep(1000); //表示当前线程(主线程)睡眠1000毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("sleep后:"+System.currentTimeMillis());
//实现Runnable接口的调用方式
Runnable1 r=new Runnable1();
Thread t=new Thread(r);
t.start();//启动一个线程
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(1000); //表示当前线程(主线程)睡眠1000毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("in main i="+i);
}
}
}
/**
* 线程类
* @author Administrator
*
*/
class Runnable1 implements Runnable{

@Override
public void run() {
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(500); //让当前线程(Runnable1)睡眠1000毫秒
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("in Runnable1 i="+i);
}
}

}

合并线程Join:

join()方法表示合并,相当于方法调用。

打断线程有2种方法:

interrupt() 不推荐 表示打断线程(不友好)

stop() 积不推荐 强制结束线程(直接关闭,比如杀死进程)

退让线程Yield():

yield() 标识退出当前线程进入就绪状态,让给别的线程执行一下。

线程状态图:



线程优先级:

线程优先级由数字表示,范围1-10,一个线程的缺省优先级是5

//Thread.MIN_PRIORITY=1

//Thread.MAX_PRIORITY=10

//Thread.NORM_PRIORITY=5

设置线程优先级方法和获取线程优先级方法

int getPriority() 获取线程优先级

void setPriority(int newPriority) 设置线程优先级

线程常用基本方法:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java 多线程