(2)Java并行程序基础----初始化线程及其方法

1. 关于进程

进行是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程是轻量级的进程,是程序执行的最小单位。

2.线程的基本知识

2.1 线程的创建

线程创建可以 new 一个线程对象,调用该对象的start()方法,如下

Thread t1 = new Thread();
t1.start();

可以继承Thread类或者实现Runnable抽象类。

2.2 终止线程

stop()方法已经被废弃。
该方法会强行把执行到一半的线程终止,可能会引起一些数据不一致的问题。

2.3 线程中断

线程中断的方法

public void Thread.interrupt()               //中断线程
public boolean Thread.isInterrupted()        //判断是否被中断
public static boolean Thread.interrupted()   //判断是否被中断,并清除当前中断状态

Thread.sleep()方法会抛出InterruptedException异常,同时会清除中断标记。

2.4 等待(wait)和通知(notify)

两个方法不再Thread类中,而是在Object类中。

当在一个对象实例上调用wait()方法后,当前线程就会在这个对象上等待。线程会一直等到其他线程调用该对象的notify()方法为止。

wait()方法必须包含在对应的synchronzied语句中,无论是wait()或者notify()都需要首先获得目标对象的一个监视器。

注意:wait()方法在执行后,会释放目标对象的锁,而sleep()方法调用后,不会释放任何资源

2.5 挂起(suspend)和继续执行(resume)

suspend()和resume()两个方法是被标注为废弃方法,是由于suspend()方法调用时,线程被挂起后,不会释放任何锁资源,直到对应的线程上进行了resume()操作。如线程A在run()方法内调用了Thread.currentThread().suspend()方法,则A线程不会释放任何锁资源,直到其他位置调用了A.resume()方法。而且resume()方法必须在suspend()后执行,否则锁资源会一直不被释放。而且调用suspend()的线程状态还是RUNNABLE状态。

2.6 等待线程结束(join)和谦让(yield)

在一个线程中调用另外一个线程的join()方法,表示等待另外一个线程结束。如在A线程中调用B.join(),表示A线程等待B线程执行完毕,跟着B线程一起向后执行。其实调用join()方法,就是使调用线程wait()在线程上。

Thread B = new Thread();
B.start();

Thread A = new Thread(){
	public void run(){
		B.join();
	}
};
A.start();

yield()方法会让出CPU,会重新抢夺。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值