对于如何分析Java语言规范的线程形式,相信很多没有经验的人都无能为力。为此,本文总结了问题产生的原因及解决方法。希望你能通过这篇文章解决这个问题。
我们第一次接触Java的时候,并没有太关注Java语言规范,这其实是错误的。下面我们来看看:开始执行Java语言规范程序后,至少会有一个线程开始运行,运行的线程称为主线程,主线程执行输入类的main()。当main()中的所有处理完成时,主线程也完成了。
当应用程序的规模大到一定程度,程序里的多线程会以每种形式存在。以下是几个常见的范例:
1) GUI应用。
2)比较耗时的输入输出处理。
3)多个客户端。
启动线程有两种方法:
1)通过使用线程类的子类的实例来启动线程。
2)通过使用Runnable接口的实现类的实例来启动线程。
请注意,“线程实例”和“线程本身”是两个不同的部分。即使建立了thread的一个实例,Thread还没有启动,即使线程已经结束,Thread的实例也不会这样消失。
设置一个实现Runnable接口的类,将这个类的实例传递给Thread的构造函数,并调用start().这是使用Runnable接口启动线程的方法。
记住:无论哪种方式,启动一个新线程的方法总是线程类的start()。
Java语言中常见的字符串注意事项
浅析Java语言和C#语言
Java语言学习:概述
什么是OSGi:Java语言的动态模块系统
快速掌握PHP调用Java语言的方法。
使用Thread类的sleep()暂停线程的执行。当执行以下语句时,当前线程(执行该语句的线程)可以暂时停止1000 ms以上。
thread . sleep(1000);
当用synchronized关键字声明一个实例方法时,只有一个线程可以操作某个实例的这种方法。“让一个线程运行”并不意味着只有一个特定的线程可以运行,而是一次只能有一个线程可以执行。此方法称为同步方法(synchronized method)。
Synchronized instance方法就是用这个锁来做线程的共享互斥。Synchronized class方法就是利用这个类的类对象的锁来做线程的共享互斥。
Java语言规范线程的协调(这三种方法执行的前提是执行线程拥有obj的锁):
1) obj.wait()是将当前线程放入等待集中;指物体;
2) obj.notify()是从obj的等待集中唤醒一个线程;
3) obj.notifyAll()是唤醒obj的等待集中的所有线程。
被唤醒的线程仅处于等锁状态(但不再处于等待集),此时obj的锁仍在执行notify()或notifyAll()的线程手中。当被唤醒的线程被锁定时,它将在wait()之后继续执行。介绍
Java语言规范多线程程序的评量标准
安全-不要损坏物体。
生存-采取必要措施。(活性)
可重用性-可重用的类。
性能-可以快速大规模处理。
单线程执行——只有一个人可以通过这座桥。
单线程执行意味着“在一个线程中执行”。就像细木桥只能让一个人通过一样,这种模式是用来限制只能运行一根线。
在单线程执行模式中,我们通过限制只有一个线程可以同时调用unsafety(加上同步)来保护unsafety。这个必须由单线程执行的程序范围称为“临界区”。
使用单线程执行模式时,可能存在死锁的危险。
当SharedResource的字段对子类开放时,它可能会因为子类编写unsafeMethod而失去安全性。
同步的方法和同步的块,不管返回还是异常,肯定会解锁。
结论,Java语言规范中:
1)基本类型、引用类型的规范和引用都是原子操作。
2)但是long和double的指定和引用是可以分开的。
3)要在线程之间共享一个长字段或双字段,必须在synchronized中操作或声明它为volatile。
看完以上内容,你掌握了如何分析Java语言规范的线程形式了吗?如果您想学习更多技能或了解更多相关内容,请关注行业资讯频道,感谢您的阅读!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/108894.html