已采纳回答 / krisleo
Thread 是一个类只能继承后,复写run方法后,生成线程类对象调用start方法就可以实现线程的运行。Runnable是一个接口,里面只有一个run方法,只有实现(implement)这个接口后,必须复写run方法才能运行,步骤和Thread是一样的,一般用Runnable比较多
2016-07-07
已采纳回答 / 罗曼蒂轲
cpu的执行时分时的,比如你电脑现在开启了三个程序ABC,。CPU在这三个程序之间不停的切换执行,由于速度很快,你觉得它们是一起执行的,执行ABC不一定是按顺序的,也可能是A>C>A>B>B>B>C>A>B>A,所以会出现随机性的交替执行
2016-07-04
最新回答 / 予远方
肯定是不行的。start方法是开启一个线程的,它会去调用run方法执行线程方法。但是主程序不会因为执行线程方法等待下去,主程序会继续往下执行的。而run方法只是一个普通的方法。假设能够直接调用run方法,那么主程序会跳到run方法中执行,直到run方法执行完毕才会继续往下执行的,这样一来就达不到线程的目的了:提高执行效率了。
2016-06-25
最赞回答 / FovLegend
写成 Thread actor = new Actor(); 的好处是 直接用 Thread 类对Actor的实例actor进行向上转型,方便后面actor调用Thread类的方法。 你用 Actor actor = new Actor(); 也可以,只是后面再用到Thread的方法时,你还是要把actor转型成Thread。
2016-06-23
最新回答 / 12v8
这个等到后边你学习了同步机制就知道了,实现的方式需要一个this关键字,而继承的时候你在用this的时候,因为创建了多个实例化对象,就不能用this了,涉及到共享数据.共享数据只能有一个.这里给你看个代码望采纳:package com.atguigu.java;//使用实现Runnable接口的方式售票/* * 此程序存在线程的安全问题,打印车票时,会出现重票,错票 * 1.线程安全问题存在的原因? * 由于一个线程在操作共享数据过程中,未执行完毕的情况下,另外的线程参与进来,导致 * 共享数据存在了...
2016-06-23
已采纳回答 / 玄鉴
我感觉是一样的,都是占着锅里的,渴望对方碗里的,还死不想让,结果导致被占着的厕所永远被这两个人占领,其他人都无法正常使用。除非关闭停止运行程序,大家都去睡觉,不然这两个线程将永远处于死锁状态。而且第二天还是有可能再次出现这种情况的,不过概率很小而已。
2016-06-21
已采纳回答 / 风云7857
Thread.sleep()使当前线程在指定的时间处于“非运行”(Not Runnable)状态。线程一直持有对象的监视器。比如一个线程当前在一个同步块或同步方法中,其它线程不能进入该块或方法中。如果另一线程调用了interrupt()方法,它将唤醒那个“睡眠的”线程。注意:sleep()是一个静态方法。这意味着只对当前线程有效,一个常见的错误是调用t.sleep(),(这里的t是一个不同于当前线程的线程)。即便是执行t.sleep(),也是当前线程进入睡眠,而不是t线程。t.suspend()是过时的方...
2016-06-21
已采纳回答 / 风云7857
如下:wait():使一个线程处于等待状态,并且释放所持有的对象的lock;sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常;notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级;notityAll():唤醒所有处于等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让他们竞争。
2016-06-20