java多线程学习

参考:http://blog.csdn.net/stellaah/article/details/6798244

创建线程:

创建线程过程:
1.继承Thread

1
2
3
4
5
6
7
8
9
10
class 类名A extends Thread
{
public void run(){}
}
 
2.实例对象
Thread t=new 类名A();
 
3.启用线程
t.start();自动会去运行run().

  

2.Runable接口

1
2
3
4
5
6
7
8
9
10
实现Runnable接口创建线程
 
1.实现Runnable接口
类名A implements Runnable()
{
    public void run(){}
}
 
2.启用线程
new Thread(类名A的对象).start();

区别:

使用Runnable接口创建多线程,适合多个相同的程序代码的线程去处理分享同一个资源的情况,把虚拟CPU(线程)同程序的代码数据有效分离,较好体现了面向对象的设计思想.

setDeamon(true)

设置守护线程,程序非守护线程全部退出时,守护线程自动退出。

join(),join(msecond) 合并线程

t1.join(500) 打断当前线程执行t1线程,500msecond 如果t1线程死亡 则直接继续执行当前线程

synchronized

synchronized代码块的用法-synchronized(Object){}

synchronized方法的用法需要与run()方法两个结合起来用

wait() notify

wait()休眠放弃资源控制锁 notify 通知其他线程去访问

Timer TimerTask

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import java.util.*;
class ZhaDan extends TimerTask  //炸弹
{
    public void run()
    {
        System.out.println("Boang... ...炸了!");
    }  
}
 
class TimerTest
{
    public static void main(String[]args)
    {
        Timer t=new Timer();//创建定时器对象
        ZhaDan z=new ZhaDan();//创建炸弹对象
        t.schedule(z,1000,2000);//隔1秒引爆炸弹.之后就是每2秒一炸
 
    while(true)
    {
        try{Thread.sleep(1000);}catch(Exception e){}
        System.out.println(new Date().getSeconds());//输出当前时间的秒
         
    }
 
    }
     
}<br>

  

java多线程学习,布布扣,bubuko.com

java多线程学习

上一篇:项目忽然出现 The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path 解决方法


下一篇:线程间通信