【Java基础】线程基本教程
2015-12-21 00:00
946 查看
摘要: 创建创建
sleep()
join()
interrupt()
yield()
线程是一个程序中的不同的执行的路径, 每一个分支都叫线程。
进程只是一个静态的概念,在我们机会里面其实运行都是线程。进程(主线程)包含很多线程。
Java创建线程有2种方式:
1、实现Runnable接口(推荐):
2、继承Thread类:
线程的调用:
线程睡眠sleep:
合并线程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) 设置线程优先级
线程常用基本方法:
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对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- Python3写爬虫(四)多线程实现数据爬取
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序