范之孤
2020-04-10
JYChiu
2019-06-12
Mac上没有javaw.exe,Activity Monitor中新跑起来的线程名就叫做 java,其中有五六个进程都叫java;
于是我的解决方案就是盯着Activity Monitor,对比程序跑起来之后,选出新加入的PID,暂时解决了这个问题;
但这样太蠢了,有没有更方便的方法呢?
建立
2019-04-28
qq_慕函数8456880
2019-04-25
peanut丶w
2019-02-16
慕瓜7073846
2018-08-16
首先我理解的守护线程是“保护线程”
第一守护线程肯定会执行。
第二如果去掉肯定会一直将线程执行完,如中间未执行完中断线程的话应该会造成空数据或是不可打开文件。
个人理解,没有实际代码支撑。
happyjey
2018-06-15
java的多线程编程自己觉得是一种模拟多线程。所有的线程函数都在一个框架下工作,或者说被框架控制。sleep函数本身就是一个计数器,你可以想象成里面添加了一个while循环。在该循环执行时,当前线程休眠,其他线程运行。当循环结束时,当前线程被唤醒,一旦拥有CPU资源便开始运行。
不说谎的小草
2018-04-17
jdk版本要与操作系统版本一致。
慕粉1207333432
2018-03-03
CPU是执行指令是分时的,每个线程是一系列指令的集合,所以有几个线程无所谓,具体执行,每个时间片还是一个具体指令
慕用7727639
2018-02-21
隐藏!纠正一下你的读音。另外 你这种人最烦了,问了问题 不选最佳答案,以后谁还会回你
qq_LZ毛荣荣_0
2017-12-25
窗口1卖了一张票,打印剩余票数为2(输出结果第三行). 然后CPU资源被窗口2占用,执行了卖票操作,但是还没有执行打印输出操作。然后窗口1获取CPU资源执行操作继续卖票,打印(输出第四行)。窗口1操作完毕,然后窗口2获取CPU资源执行最后的输出打印操作(第五行)。
忽职守
2017-10-10
奥 明白了
慕函数0603164
2017-09-05
是因为线程的执行顺序啊,每次执行都不一定是一样的。至于剩余票的问题,老师有回答啊~o(^_^)o
丶子非鱼
2017-05-24
丶子非鱼
2017-05-23
public void run() {
// TODO Auto-generated method stub
while(true){
synchronized(lockObj){
if(ticketsNum>0){
ticketsNum--;
System.out.println(Thread.currentThread().getName()+"卖出一张票,剩余"+ticketsNum);
//Thread.yield();
lockObj.notifyAll();
}
}
}
}这样改就能按顺序输出了
皓腕凝雪
2017-03-25
因为创建线程时 第二个参数 默认是线程名称
Yester_dy
2017-02-18
键盘输入后 要按Enter键
Clz0
2016-12-28
你这个是把继承当实现接口用了啊,类继承像这样用是看不到与接口的区别的。要想共享资源你把你的变量ticket定义为static 静态常量就行了,我看过别人这么写过
PineElsa
2016-12-17
具体的原理可以分析一下么?
慕粉4260019
2016-11-26
Callable与 Future 两功能是Java在后续版本中为了适应多并法才加入的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其他线程执行的任务。
Callable的接口定义如下;
public interface Callable<V> {
V call() throws Exception;
}
Callable和Runnable的区别如下:
I Callable定义的方法是call,而Runnable定义的方法是run。
II Callable的call方法可以有返回值,而Runnable的run方法不能有返回值。
III Callable的call方法可抛出异常,而Runnable的run方法不能抛出异常。
Future 介绍
Future表示异步计算的结果,它提供了检查计算是否完成的方法,以等待计算的完成,并检索计算的结果。Future的cancel方法可以取消任务的执行,它有一布尔参数,参数为 true 表示立即中断任务的执行,参数为 false 表示允许正在运行的任务运行完成。Future的 get 方法等待计算完成,获取计算结果
_菲菲菲菲
2016-11-21
因为其实字符串在之前就已经拼接好了,只是当一号线程重新拿到cpu资源时才打印出来
HelloBot
2016-11-19
246小言
2016-10-25
窗口3卖了一张票,剩余票数:2 为什么还能声誉三张票 不是runable接口嘛
_三_毳
2016-09-25
这种情况的解决办法应该可以用线程同步解决
慕粉3687206
2016-07-28
public class SoldTicketThread implements Runnable {
private int ticket = 5;
private synchronized void sale() {
if (ticket > 0) {
System.out.println(Thread.currentThread().getName() + "卖出了一张票,剩余"
+ (--ticket) + "张票");
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public void run() {
while (ticket > 0) {
sale();
// 这里要确保进入卖票环节前就把资源锁住
}
}
public static void main(String[] args) {
SoldTicketThread window = new SoldTicketThread();
Thread wd1 = new Thread(window, "窗口二");
Thread wd2 = new Thread(window, "窗口一");
Thread wd3 = new Thread(window, "窗口三");
wd1.start();
wd2.start();
wd3.start();
}
}
你本身的逻辑就出错了,卖票的操作肯定要在循环体里面,而且要锁定的内容是整个卖票过程的操作。
慕粉3687206
2016-07-28
16年的帖子 19年的回答。。。
哀幻暝
2016-07-20
是这样的 因为runnable处理同一资源也无法保证 这个资源 从加载 更改 到赋值的原子性
dabing9
2016-07-16
某个线程出现等待被另外线程抢先运行
紫叶_1
2016-06-22
使用synchronized 对减少票的方法进行同步修饰
连宏伟HW
2016-06-09
os.write(("\r\nword"+count).getBytes());你应该这么写啊,你少写了一对括号