Java线程基础学习

1. 线程和进程的区别?
1)什么是进程:例如一个exe文件,一个class文件,一个QQ程序,一个ppt
每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销。
2)什么是线程:一个程序里的执行路径。(一个程序内部的顺序控制流)
线程可以看做是轻量级的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器,线程切换的开销小。
3)多进程:在操作系统中能通知运行多个任务(程序),如QQ, PPT, Word, ...
4)多线程:在同一应用中有多个顺序流同时执行。

2.如何实现一个线程?
1)JVM启动时,主方法(public static void main() {})会启动一个线程。
2)线程具体的执行逻辑由Thread类的实例的run()方法来实现。
3)start()方法:启动一个线程。

3. 创建线程的两种方式:
1)实现Runnable接口:
实现Runnable接口的类要实现run()方法
然后在主线程中这样使用:Thread t1 = new Thread(MyThread); //MyThread为实现了Runnable接口的类
2)继承Thread类
MyThread t1 = new MyThread(); //MyThread是继承了Thread的类。

4. 线程的状态:

5. 线程控制的基本方法:
1)Thread.sleep(long millis):Thread类的static方法,让当前线程睡眠多少毫秒。
[b]sleep方法不释放对象锁[/b]
2)stop(): 废弃了的方法,暴力地终止线程,并未关闭资源,相当于杀死线程。
3)join(): 相当于方法调用,执行完join方法的对象的线程,才能执行其他的线程。
join()方式示例:
public class TestJoin {
public static void main(String[] args) {
MyThread2 t1 = new MyThread2("abcde");
t1.start();
try {
t1.join();
} catch (InterruptedException e) {}

for(int i=1;i<=10;i++){
System.out.println("i am main thread");
}
}
}
class MyThread2 extends Thread {
MyThread2(String s){
super(s);
}

public void run(){
for(int i =1;i<=10;i++){
System.out.println("i am "+getName());
try {
sleep(1000);
} catch (InterruptedException e) {
return;
}
}
}
}
在使用了jion()方法之后,只有当t1执行完后,才会去继续执行main方法。
4)yield(): 让出CUP, 给其他线程执行的机会,当前线程进入就绪队列等待调度。
注:当前线程仅让出一下,然后还参与竞争CUP.
5)wait(): 让当前线程进入等待池(wait pool)
6)notify()/notifyAll():

====================
多线程学习可参考: http://blog.csdn.net/lonelyroamer/article/details/7948329
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值