Java多线程
2013-10-13 22:10
267 查看
1.线程和进程
进程:处于运行中的程序,具有一定独立功能,进程是系统进行资源分配和调度的一个独立单位,具有
独立性,动态性,并发性。
线程:是"进程"中某个单一顺序的控制流。
关系:进程拥有一个或多个线程,一个线程必须有一个父进程,他与父进程的其他线程共享该进程的所
有资源。
2.线程的创建和启动
(1)继承Thread类
(2)实现Runnable接口创建线程类
3.线程生命周期
新建(new)---就绪(start())---运行(run())---阻塞(sleep())---死亡(stop())
4.线程的控制
(1)jion()方法:由使用线程的程序调用;
如:线程1中:线程2.jion();-----则先等2执行完再继续执行线程1.
(2)sleep(int s)方法:让正在执行的线程暂停s毫秒---该进程进入阻塞态;
(3)yield()让步方法:让正在执行的线程进入就绪态;
(4)改变线程的优先级:setPriority(int newPriority) 参数取值为1-10之间的整数。
(5)后台线程:setDaemon(true),后台线程会在所有前台进程死亡后自动死亡,JVM的垃圾回收线程就是
后台线程。
5.线程的同步,通信,锁等是操作系统方面的知识。
6.线程池
系统启动一个新线程的成本是比较高的,涉及与操作系统的交互,在需要大量创建线程的情况下使用线程池提
高性能。
线程池在系统启动时创建大量的空闲线程,程序将一个Runnable对象传给线程池,线程池就启动一条线程执
行该对象的run方法,run结束后,该线程不会死亡,而是返回线程池成为空线程,继续等待。
进程:处于运行中的程序,具有一定独立功能,进程是系统进行资源分配和调度的一个独立单位,具有
独立性,动态性,并发性。
线程:是"进程"中某个单一顺序的控制流。
关系:进程拥有一个或多个线程,一个线程必须有一个父进程,他与父进程的其他线程共享该进程的所
有资源。
2.线程的创建和启动
(1)继承Thread类
public class MyThread extends Thread { private int i; public void run() { for(;i<100;i++) System.out.println(getName()+" "+i); } public static void main(String[] args) { for(int i=0;i<100;i++) { System.out.println(Thread.currentThread().getName()+" "+i); if(i==20) { new MyThread().start(); new MyThread().start(); } } } }
(2)实现Runnable接口创建线程类
public class MyThread2 implements Runnable{ private int i; public void run() { for(;i<100;i++) System.out.println(Thread.currentThread().getName()+" "+i); } public static void main(String[] args) { for(int i=0;i<100;i++) { System.out.println(Thread.currentThread().getName()+" "+i); if(i==20) { MyThread2 st=new MyThread2(); new Thread(st,"新线程1").start(); new Thread(st,"新线程2").start(); } } } }
3.线程生命周期
新建(new)---就绪(start())---运行(run())---阻塞(sleep())---死亡(stop())
4.线程的控制
(1)jion()方法:由使用线程的程序调用;
如:线程1中:线程2.jion();-----则先等2执行完再继续执行线程1.
(2)sleep(int s)方法:让正在执行的线程暂停s毫秒---该进程进入阻塞态;
(3)yield()让步方法:让正在执行的线程进入就绪态;
(4)改变线程的优先级:setPriority(int newPriority) 参数取值为1-10之间的整数。
(5)后台线程:setDaemon(true),后台线程会在所有前台进程死亡后自动死亡,JVM的垃圾回收线程就是
后台线程。
5.线程的同步,通信,锁等是操作系统方面的知识。
6.线程池
系统启动一个新线程的成本是比较高的,涉及与操作系统的交互,在需要大量创建线程的情况下使用线程池提
高性能。
线程池在系统启动时创建大量的空闲线程,程序将一个Runnable对象传给线程池,线程池就启动一条线程执
行该对象的run方法,run结束后,该线程不会死亡,而是返回线程池成为空线程,继续等待。
相关文章推荐
- corejava笔记1 多线程
- Java 上传文件 Socket类应用 多线程上传 有注释哈,上传完请看看文件大小是否正常
- 黑马程序员_java多线程的一些总结(一)
- java 单例模式与多线程
- JAVA多线程学习
- java夯实基础-多线程
- java多线程简单demo
- Java多线程:线程状态
- 25、Java并发性和多线程-阻塞队列
- Java技巧:多线程程序设计二十三个要点(转)
- Java 锁LOCK&多线程安全
- 黑马程序员_Java基础:实现多线程对共有数据的同步操作
- java 多线程实现方式Thread和Runnable之间差异
- java多线程并发之synchronized
- java 多线程之内存可见性
- java多线程(100个线程向同一个账户充值1元)
- java例程练习(多线程——yield()方法)
- JAVA多线程
- Java 多线程面试问题汇总
- Java 多线程(八) 线程状态图