java创建多个线程,是一起进入内存的吗?为什么最好一个优先级最高,它却没有最先执行?

作者&投稿:泰程 (若有异议请与网页底部的电邮联系)
java 创建多个线程,为什么线程是一同进入内存的?~

建议去看看多线程的底层原理,以及为何要使用多线程!!
为何要使用多线程?答:多线程就象是人体一样,一直在并行的做许多工作,例如,人可以同时呼吸,血液循环,消化食物的。多线程可以将一个程序划分成多个任务,他们彼此独立的工作,以方便有效的使用处理器和用户的时间.这种比喻精辟,只要我们的机器资源够用,就要尽量提高程序的执行速度,这样能让用户感到舒服。
如果要想实现线程同步可以考虑线程同步的问题!
线程同步的方法:
wait():使一个线程处于等待状态,并且释放所持有的对象的lock。
sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉InterruptedException异常。
notify():唤醒一个处于等待状态的线程,注意的是在调用此方法的时候,并不能确切的唤醒某一个等待状态的线程,而是由JVM确定唤醒哪个线程,而且不是按优先级。
Allnotity():唤醒所有处入等待状态的线程,注意并不是给所有唤醒线程一个对象的锁,而是让它们竞争。




》》。。。而sleep之后就会随机排序了,优先级此时就不起作用了,有没有解决的办法?
其中一个办法是让每一个线程记得必须比它先完成的另一个线程,
然后在必要时强制它放弃执行一直到那另一个线程执行完为止。 比如:


class CustomThread extends Thread {
private Thread 先完;

CustomThread(String name, Thread 先完) {
super(name);
this.先完 = 先完;
}

public void run() {
System.out.println(this.getName());
try {
sleep(2000);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}

if (先完 != null)
try {
先完.join();
} catch (InterruptedException e) {}

System.out.println("NAME: " + this.getName() + " Bye");
}
}


class MultiThread {
public static void main(String args[]) throws InterruptedException {
CustomThread thread1 = new CustomThread("first", null);
CustomThread thread2 = new CustomThread("second", thread1);
CustomThread thread3 = new CustomThread("third", thread2);
CustomThread thread4 = new CustomThread("fourth", thread3);
thread1.setPriority(Thread.MAX_PRIORITY);
thread2.setPriority(Thread.MAX_PRIORITY-1);
thread3.setPriority(Thread.MAX_PRIORITY-2);
thread4.setPriority(Thread.MAX_PRIORITY-3);
thread1.start();
thread2.start();
thread3.start();
thread4.start();
}
}



4 等 3、3 等 2、。。。 串联成单一线程了,所以如果情况允许的话,
把所有必须顺序执行的任务集合在单一线程里(比如留在 main 里)是另一个办法。


》》。。。优先级到底有什么用处?
轻易地让程序即使在非常忙碌的时候也能迅速处理使用者的输入(该输入也许是调整某项操作的优先级:)、编写游戏时更方便地实现战场上级别较高的一方优先攻击、等等。


线程的优先级越高,只是获取cpu的执行时间片多一些.并不是比别的线程先执行.线程在start启动后还有个等待cpu来相应处理的过程,并非一start就立刻执行的.先start的线程也不能保证就一定比后start的线程更早执行的

肯定是一起读进内存
至于先执行那个线程 那个是完全随机的

你多执行几次,看看结果还是不是每次都不是6开始,虽然多线程有规则,但是大部分都有一句不保证的话,你不用纠结于这个,就是不保证,我运行了10次都是6开始,后面的谁先没一定

优先级大 只能说明他被执行的概率大而已 并不一定执行他 先执行谁通过cpu调度模型决定的 就像有两个人买同一期彩票 一个买1000张 一个买1张 结果买一张的中奖二一千张的没中一样

优先级高只能是提高随机到的可能性提高了,不一定是最先执行的。

线程是随机执行的,优先级高只是会让随机执行到的概率变大,而不是必然让他优先执行。


ava中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop...
若标志指出线程应该挂起,便用wait()命其进入等待状态。若标志指出线程应当恢复,则用一个notify()重新启动线程。 本回答被提问者采纳 已赞过 已踩过< 你对这个回答的评价是? 评论 收起 aglx623 2012-11-23 · TA获得超过1063个赞 知道小有建树答主 回答量:989 采纳率:50% 帮助的人:358万 我...

多线程软件
双线程的:ava,csol,winrar,winzip,autocad,delphi 四:ie,vsiual studio 2005,八:3DMark,pcmark 四线程和八线程的软件都不多,一般双线程就够速度的了,所以四线程以上的软件没几个

这样的配置玩AVA怎么弄能让CPU降到70.80%以下?
可以玩,实际上网络游戏对电脑配置要求十分低,我7100GS都能玩,楼主的显卡虽然不怎么好但是玩AVA绰绰有余,那个显卡检测不用管它,直接进游戏就行

我重新装了一次显卡驱动后,AVA就进不去了.重装几次都不可以.大哥帮帮我...
驱动如下:使用OP规范 三重缓冲:关 各项异性过滤:4x 垂直同步:关 多显示器:单一。平滑灰度:关 平滑处理设置:4x 平滑透明度:关 强制MIPMAPS:双线性 扩展:关 最大预渲染帧速:0 纹理过滤 MIP过滤器优化:关 纹理过滤:采样优化:开 纹理过滤:质量 纹理过滤:三线优化:关 线程优化:自动 如果...

网速正常,玩AVA很卡
楼下的真心瞎说! PING和延迟有关系,和网速与硬件都没有关系的。再说了I5+GT540M不用担心硬件。如果卡顿的话就是网络有问题。比如:你家网在电信你玩网通区。在网通玩电信去都会卡的。ping自然就飙到几百了,可能还飙到几千人家以为你是G ...

我的电脑要换什么才能玩AVA
你要整体换平台,才能玩舒服AVA 1、你的U是单核的3.0,后面的(2CPUS)是指HT超线程技术,那个真双核差的一帽子远 2、内存你是1G的DDR的,属于比较老的内存了 3、你的显卡9600,已经是04-05年时候的显卡了,已经换了很多代了,而且关键的是,这个卡是AGP的卡,意味着你的主板的显卡插槽也是...

AVA战地之王配置问题?
官方给的配置与现实差距很大,我家的P4 478单核 2.4Ghz(支持超线程,现已超频至3.0)+ 1G内存 + X1650 512M的独显也玩得特流畅,就算不要X1650独显,用845GE集显也玩得不错……你的配置绝对行!!! 真的要买显卡的话买个9400GT也绰绰有余,你可以尝试超频CPU玩,不用买显卡也可以玩的很...

使用多线程应注意些什么?
<1>.不要调用Thread类或Runnable对象的run方法。直接调用run方法只会执行同一个线程中的任务,而不会启动新的线程。应该调用Thread.start方法。这个方法将创建一个执行run方法的新线程。<2>.interrupted和isInterrupted是两个非常相似的方法。interrupted方法是一个静态的方法。它检测当前的线程是否被中断。

开AVA占CPU使用率100%,CPU温度升高。
有一个或多个ACCESS数据库在多次读写过程中损坏,微软的MDAC系统在写入这个损坏的ACCESS文件时,ASP线程处于BLOCK状态,结果其它线程只能等待,IIS被死锁了,全部的CPU时间都消耗在DLLHOST中。 解决办法: 安装“一流信息监控拦截系统”,使用其中的“首席文件检查官IIS健康检查官”软件, 启用”查找死锁模块”,设置: --...

玩AVA不是双核CPU能玩吗
单核的可以玩。。。估计有点卡...7200GT多少MB无法回答...如同问买件衣服多少钱一样 太笼统了。。。地摊上10块不到一件也有,品牌店里 10W一件也有...你要给出你显卡的具体型号和牌子 才好回答是多少mb的

三江侗族自治县17567695029: java创建多个线程,是一起进入内存的吗?为什么最好一个优先级最高,它却没有最先执行?
颜妹甲磺: 线程的优先级越高,只是获取cpu的执行时间片多一些.并不是比别的线程先执行.线程在start启动后还有个等待cpu来相应处理的过程,并非一start就立刻执行的.先start的线程也不能保证就一定比后start的线程更早执行的

三江侗族自治县17567695029: java 多线程能同时运行吗 详细看补充 -
颜妹甲磺: 在Thread.sleep(100); 后面加上一个 System.out.println("线程 " + Thread.currentThread().getName()) + " 正在干活");然后来跑一下.4个线程会同时运行,但按某个算法来分配 CPU 时间片,这个和多任务操作系统(比如Windows)是类似的原理.多核CPU是每时刻能至少2个线程同时运行,不过我们要意识到我们使用 System.out 时是在共用同一个 OutputStream / PrintStream,因此无法直接观察到细节,所以的 I/O 操作都需要锁定设备后操作,不能并发进行.

三江侗族自治县17567695029: java多线程 一个线程一个连接吗 -
颜妹甲磺: 您好,提问者: Java中的线程是多任务的,并不是一个一个线程连接. 处理器会同时处理好几个线程,其实放慢速度来讲是一个个执行的,由于处理较快给我们的感觉就是同时运行的,增加执行效率、更快速. 就好比:你开一个QQ,然后跟三个人同时聊天,这就是三线程!

三江侗族自治县17567695029: Java如何实现多线程同步? -
颜妹甲磺: //解决方案-1 设置3把锁, 然后把锁们应用到所有线程中 (涉及到synchronized wait notify等, 嫌麻烦. 略) 解决方案-2 设置3个全局共享的信号标记(信号灯) + 3子线程分别占用标记1 2 3 + 主线程轮询/等待 (简洁明快 推荐) //解决方案-2 实现...

三江侗族自治县17567695029: 在java中同时起多个线程,然后怎么让多个线程进入等待状态? -
颜妹甲磺: class MyThread extends Thread { static Object lock = new Object(); public void run() {// TODO Auto-generated method stub } public void toWait() { synchronized(lock){ try { lock.wait(); } catch (InterruptedException e) {// TODO Auto-generated catch ...

三江侗族自治县17567695029: java创建两个线程的方法和它们的区别 -
颜妹甲磺: Java提供了线程类Thread来创建多线程的程序.其实,创建线程与创建普通的类的对象的操作是一样的,而线程就是Thread类或其子类的实例对象.每个Thread对象描述了一个单独的线程.要产生一个线程,有两种方法:◆需要从Java.lang....

三江侗族自治县17567695029: 如何使用Java编写多线程程序(1) -
颜妹甲磺: 一、简介1、什么是线程要说线程,就必须先说说进程,进程就是程序的运行时的一个实例.线程呢可以看作单独地占有CPU时间来执行相应的代码的.对早期的计算机(如DOS)而言,线程既是进程,进程既是进程,因为她是单线程的.当然...

三江侗族自治县17567695029: java 有几种方式实现多线程同步 -
颜妹甲磺: 多线程有两种实现方法,分别是继承Thread类与实现Runnable接口 同步的实现方面有两种,分别是synchronized,wait与notify

三江侗族自治县17567695029: 如何解决java 多线程问题 -
颜妹甲磺: Java线程同步需要我们不断的进行相关知识的学习,下面我们就来看看如何才能更好的在学习中掌握相关的知识讯息,来完善我们自身的编写手段.希望大家有所收获. Java线程同步的优先级代表该线程的重要程度,当有多个线程同时处于可...

三江侗族自治县17567695029: java多线程理解 -
颜妹甲磺: java语言已经内置了多线程支持,所有实现Runnable接口的类都可被启动一个新线程,新线程会执行该实例的run()方法,当run()方法执行完毕后,线程就结束了. 一旦一个线程执行完毕,这个实例就不能再重新启动,只能重新生成一个新...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网