java基本线程

线程是Java的内嵌特性,线程并不轻易把握,有专门介绍Java线程的书籍,读者可以参考。由此可见Java线程的重要性,本文将具体介绍线程的基本知识。

     有的时候你可能想写一个程序,每隔一段时间执行相关的任务,这个时候你可以使用Timer和TimerTask,非常方便。你可以参考使用Java中的Timer和TimerTask。

     在Java中实现一个线程有两种方法,第一是实现Runnable接口实现它的run()方法,第二种是继续Thread类,覆盖它的run()方法。下面是代码示例:
public class DoSomething implements Runnable {
    public void run(){
     // here is where you do something
    }
}
public class DoAnotherThing extends Thread {
    public void run(){
 // here is where you do something
    }
}
这两种方法的区别是,假如你的类已经继续了其它的类,那么你只能选择实现Runnable接口了,因为Java只答应单继续的。

     Java中的线程有四种状态分别是:运行、就绪、挂起、结束。假如一个线程结束了也就说明他是一个死线程了。当你调用一个线程实例的start()的方法的时候,这个时候线程进入就绪状态,注重并不是运行状态,当虚拟机开始分配给他CPU的运行时间片的时候线程开始进入运行状态,当线程进入等待状态,例如等待某个事件发生的时候,这时候线程处于挂起状态。

     启动一个线程你只需要调用start()方法,针对两种实现线程的方法也有两种启动线程的方法,分别如下:
DoSomething doIt = new DoSomething();
Thread myThread = new Thread( doIt );
myThread.start();

DoAnotherThing doIt = new DoAnotherThing();
doIt.start();
由于安全等因素Thread中的stop()方法已经不推荐使用了,因此假如你想要停止一个线程的时候可以通过设置一个信号量,例如:
public class MyThread implements Runnable {
    private boolean quit = false;

    public void run(){
    while( !quit ){
     // do something
    }
    }

    public void quit(){
     quit = true;
    }
}
    假如每个线程只做它自己的事情,那么就很简单了,但是有的时候几个线程可能要同时访问一个对象并可能对它进行修改,这个时候你必须使用线程的同步在方法或者代码块使用要害字synchronized,例如:
public class Counter {
    private int counter;

    public synchronized int increment(){
 return ++counter;
    }

    public synchronized int decrement(){
 if( --counter < 0 ){
     counter = 0;
 }

 return counter;
    }
}
每个java对象都可以最为一个监视器,当线程访问它的synchronized方法的时候,他只答应在一个时间只有一个线程对他访问,让其他得线程排队等候。这样就可以避免多线程对共享数据造成破坏。记住synchronized是会耗费系统资源降低程序执行效率的,因此一定要在需要同步的时候才使用,尤其在J2ME的开发中要小心。假如你要是想让线程等待某个事件的发生然后继续执行的话,那么这就涉及到线程的调度了。在java中通过wait(),notify(),notifyAll()来实现,这三个方法是在Object类中定义的,当你想让线程挂起的时候调用obj.wait()方法,在同样的obj上调用notify()则让线程重新开始运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值