JAVA 多线程 杂谈

一:java创建线程的三种方式

1.继承Thread类;

2.实现Runnable接口;

3.实现Callable接口:Callable接口重写的是 call() 方法。1-允许有返回值,2-允许抛出异常。

二:java线程运行状态

NEW:初始状态,线程被构建,但是还没有调用start()方法;

RUNNABLE:运行状态,java线程将操作系统中的就绪和运行两种状态笼统地称作“运行中“;

BLOCKED:阻塞状态,表示线程阻塞于锁;

WAITING:等待状态,表示线程进入等待状态,进入该状态表示当前线程需要等待其它线程做出一些特定动作(通知或中断);

TIME_WAITING:超时等待状态,它是可以在指定的时间自行返回的;

TERMINATED:表示当前线程已经执行完毕;

扫描二维码关注公众号,回复: 5809728 查看本文章

三:线程的启动和停止:调用线程的start()方法进行启动,随着run()方法的执行完毕,线程也随之终止。

启动:线程对象在初始化完成之后,调用start()方法就可以启动这个线程。线程start()方法的含义是:当前线程(即parent线程)同步告知java虚拟机,只要线程规划器空闲,应立即启动调用start()方法的线程。

终止:

1.过时的方法:暂停—suspend();恢复—resume(); 停止—stop();它们过时的原因均是,在方法调用后,不会保证线程所占有的资源被正常释放。

2.通过响应中断来停止线程:中断可以理解为线程的一个标识位的属性,它表示一个运行中的线程是否被其他线程进行了中断操作,中断操作好比其它线程对该线程打了招呼,

其它线程通过调用该线程的interrupt()方法对其进行中断操作。

线程通过检查自身是否被中断来进行响应,线程通过方法isInterrupted()来进行判断是否被中断。

3.利用一个boolean变量来控制需要停止任务并终止该线程。

 四:两个关键字

volatile:可以用来修饰字段(成员变量)就是告知程序任何对该变量的访问均需要从共享内存中获取,而对它的改变必须同步刷新回共享内存,它能保证所有线程对变量访问的可见性。

synchronized:可以修饰方法或者以同步块的形式来进行使用,它主要确保多个线程在同一个时刻,只能有一个线程处于方法或者同步块中,它保证了线程对变量访问的可见性和排他性。

未完待续

猜你喜欢

转载自www.cnblogs.com/dev1ce/p/10637367.html
今日推荐