Java世界

学习笔记

常用链接

统计

积分与排名

天籁村

新华网

雅虎

最新评论

Java线程

多进程:在操作系统中能运行多个任务。
多线程:在同一个应用程序中有多个顺序流执行。
两者区别:进程拥有自己完整的变量,线程则共享相同的数据。

JVM有一个主线程,启动Java程序则启动他,并调用程序的main()方法,多线程是通过虚拟CPU实现,通过java.lang.Thread类实现,继承Thread类。
构造方法:
Thread()
Thread(Runable target)
Thread(Runable target,String name)
启动线程用run()方法,自动调用。
start()进入可运行状态,通过“.”来调用。

1.实现Runable接口定义唯一的run()方法。
Class rt = new Class();
Thread t = new Thread(rt);
t.start();
2.继承Thread类。
Thread t = new Thread();
t.start();
两者的区别:
1.Runable 可以从其他类继承,保持程序风格一致性。
2.Thread 不能再从其他类继承。

结束线程:
1.run()方法执行完毕。
2.抛出一个异常或错误。
3.调用一个Deprecated的stop()方法。(过时)

后台线程为其他线程提供服务,优先级最低,级别0-10,默认级别为5。
如:Thread dt = new Thread();
        dt.setDaemon(true);    //设置成后台线程
        dt.start();

线程控制:

测试线程是否处于Runable状态   isAlive()方法。

中断线程
 Thread.sleep()中断时间以毫秒为单位。
 Thread.yield()放弃执行,执行不低于此线程的其他线程。

设置线程的优先级
getPriority() 获取
setPriority() 设置

对象方法
wait()处于等待状态,等待被唤醒。
notify()/notifyAll() 唤醒线程/所有线程。

join()调用这个方法主线程,等待加入子线程完成。

异常为 InterruptedException e 。

Thread.currentThread().isAlive();   // 获取当前线程是否处于Runable状态
Thread.currentThread().getName();  //获取当前线程的名字

互斥锁:保证共享数据的完整性。每个对象对应一个标记,保证在任一时刻,只能有一个线程访问该对象,使用synchronized关键字修饰。放在方法、对象、块前。
释放锁用break,return或抛出exception自动释放;调用wait()方法将放弃拥有的对象锁。
如:public void method() {
               synchronized(obj) {
               }
         }
         等同于
         public synchronized void method() {
         }


死锁:两个线程都在等待对象锁,不可避免。

posted on 2007-11-01 11:35 Rabbit 阅读(223) 评论(0)  编辑  收藏


只有注册用户登录后才能发表评论。


网站导航: