Java class线程需要我们不断的学习,在长期的使用中会出现很多的问题,下面我们就从Java class线程的源代码中看看如何才能更好的解决相关问题,希望大家有所收获。
站在用户的角度思考问题,与客户深入沟通,找到厦门网站设计与厦门网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站设计、网站建设、企业官网、英文网站、手机端网站、网站推广、国际域名空间、虚拟空间、企业邮箱。业务覆盖厦门地区。
- class Test {
- public static void main(String[] args) {
- //定义Object对象o
- Object o = new Object();
- //定义Runclass对象r
- Runclass r = new Runclass();
- //注意这里,没有将对象o和对象r的引用传递给两个线程
- Thread1 t1 = new Thread1();
- Thread2 t2 = new Thread2();
- t1.start();
- t2.start();
- }
- }
问题:两个线程类的成员变量没有赋值方法,也没有初始化,所以其引用为空,在调用时会抛出NullPointerException
解决:两个线程类的构造方法修改一下
- Thread1(Runclass r, Object o) {
- this.r = r;
- this.o = o;
- }
- Thread2(Runclass r, Object o) {
- this.r = r;
- this.o = o;
- }
- 调用方法变成:
- public static void main(String[] args) {
- Object o = new Object();
- Runclass r = new Runclass();
- Thread1 t1 = new Thread1(r, o);
- Thread2 t2 = new Thread2(r, o);
- t1.start();
- t2.start();
- }
这样就解决了NullPointerException不过程序其他地方还有问题,程序会抛IllegalMonitorStateException这涉及到线程同步,楼主对wait的理解还不够,可以看看相关资料。在这个程序中,需要将同步的地方改成o.wait();和o.notify();因为锁定的对象是Object o。
【编辑推荐】
网站栏目:Java class线程源代码学习全过程
网站链接:http://www.shufengxianlan.com/qtweb/news39/35739.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联