Java中线程主要直接继承有Thread类或者继承Runnnable接口。
一、线程和进程之间的区别,简单来说线程是进程一部分,一个进程包含一个或者多个线程,线程之间共享内存,进程之间独立内存。
二:Java线程创建方法:
TreadClass extends Thread{
public void run()
{ //执行线程内容
}
}
或者
TreadClass implements Runnable()
{public void run()
{//线程执行内容}
}
三、Java线程同步问题,当多个线程共同调用同一个方法或者类时,会发生意外修改变量,有时这不是我们期望的结果,我们可以给该方法或者类上锁,一个方法或者类只有唯一的锁,多个线程执行时获得该对象锁的线程获得执行条件。同步方法syncharonized。
四、Java线程通信问题,Java线程通信可以采用类似生产者,消费者来比喻俩个线程之间的关系,生产者生产物品,消费者消费,生产者生产时,通知消费者此时还在生产没有物品(消费者wait()),生产结束时通知消费者消费(生产者notify()消费者)。
主要涉及方法final void wait () throws interruptedException;//等待
final void notify();//通知
final void notifyall;//通知所有
五、Java线程死锁问题,当一个线程A中的方法a调用另外一个线程B中的方法b,同时线程B的中方法b调用线程A中的方法a时会发生线程阻塞。也就是说俩个线程循环依赖同一个同步对象时会发生死锁。死锁一般是cpu时钟被俩个线程同时捕获或者更复杂的情况。
六、线程挂起,恢复和停止问题,方法名分别为suspend(),resunme(),stop()三种方法,对线程挂起,恢复和停止,控制线程的执行。sleep()和suspend的区别在于sleep()阻塞线程一段时间自动恢复,而suspend()必须调用resunme()方法才能恢复线程,yield()方法结束当前线程执行,终止当前线程CPU执行时间,下次执行同样参与其他线程CPU时间竞争。
七、线程状态监控问题,采用Thread.getState()方法,方法的返回值有:
BLOCKD线程在等待锁而挂起;
NEW线程未开始;
RUNNABLE当前线程正在执行;
TERMINATED(terminated)线程完成状态;
TIMED_WAITING线程挂起执行一段指定的时间,一般调用sleep()方法或者wait()或者join()方法时会出现;
WATING线程等待,一般调用wait()或者join()方法时出现;