javaforsleep
『壹』 java for循环执行500个休眠一段时间
public static void main(String[] args) throws InterruptedException {
for (int i = 0; i <500; i++) {//i从零开始,
if(i == 499){//等于499时就已经是第500次了
Thread.sleep(5000);//java中的线程,中间的参数可以自己定义,单位是毫秒,1000毫秒等于一秒,所以现在是当i执行到500次时,休息五秒
}
}
}
『贰』 java的for循环中像暂停.1s应该怎么写
你用线程sleep就可以了:
Thread.sleep(100);//停止0.1s
『叁』 java线程for循环没有循环完成就停止了,这是为什么
多线程需要来基础学好点。源在来开发,否则总有莫名其妙的事情冒出来。而自己无法解释。
你这个问题很简单。
你要main主线程1秒后输出list集合数据。在你代码中这写法本身是错误的,因为你有2个子线程,有锁,安全地往list中加2千个数据,却每次要等待1毫秒,估算2千数据你程序的加完需要2秒多时间,在1秒后,子线程还没有结束,大概1千个数据还没加完呢,你主线程就输出了当前数据。肯定结果不对。哪来的2千个数据呢。你说循环没完成就停止了,说法完全错误。。。
你要main主线程输出list集合数据。正确操作应该是:
Thread t1 = ...;
t1.start();
t2也是如此。
最后main线程下面,输出list数据前加2行代码
t1.join();
t2.join();
然后在打印list。
join方法意思很简单。就是等待线程结束后,我再继续。main线程等待了2个子线程都结束后,即保证数据全部进list后,打印结果。
『肆』 java sleep()用法
th1.sleep(10); 这是让th1线程暂停10毫秒
如果你想启动th1的话
th1.start();
当调用了start方法就代表这个线程开始启动
『伍』 JAVA for循环比如我的长度是10000,每循环到500个的时候休眠一段时间,接着500*n+1开始执行
for(int i=1;i<=长度;i++){
if(i%500==0){
Thread.sleep(100);// 睡眠100毫秒
}
}
『陆』 java for循环中的sleep
sleep(int ms); //这个ms是毫秒,1000没有错。
以下代码是每秒打出一个a.
for(int i = 0; i < 10; i++){
System.out.print("a");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
『柒』 java中的sleep和wait的区别
这两个方法主要来源是,sleep用于线程控制,而wait用于线程间的通信,与wait配套的方法还有notify和notifyAll.
区别一:
sleep是Thread类的方法,是线程用来 控制自身流程的,比如有一个要报时的线程,每一秒中打印出一个时间,那么我就需要在print方法前面加上一个sleep让自己每隔一秒执行一次。就像个闹钟一样。
wait是Object类的方法,用来线程间的通信,这个方法会使当前拥有该对象锁的进程等待知道其他线程调用notify方法时再醒来,不过你也可以给他指定一个时间,自动醒来。这个方法主要是用走不同线程之间的调度的。
区别二 :
关于锁的释放 ,在这里假设大家已经知道了锁的概念及其意义。调用sleep方法不会释放锁(自己的感觉是sleep方法本来就是和锁没有关系的,因为他是一个线程用于管理自己的方法,不涉及线程通信)
JDK 7 中的解释:
“public static void sleep(long millis)
throws InterruptedException
Causes the currently executing thread to sleep (temporarily cease execution) for the specified number of milliseconds, subject to the precision and accuracy of system timers and schelers.The thread does not lose ownership of any monitors.
public final void wait() throws InterruptedException
Causes the current thread to wait until another thread invokes the notify() method or the notifyAll() method for this object. In other words, this method behaves exactly as if it simply performs the call wait(0).The current thread must own this object's monitor. The thread releases ownership of this monitor and waits until another thread notifies threads waiting on this object's monitor to wake up either through a call to the notify method the notifyAll method. The thread then waits until it can re-obtain ownership of the monitor and resumes execution.“
调用wait方法会释放当前线程的锁(其实线程间的通信是靠对象来管理的,所有操作一个对象的线程是这个对象通过自己的wait方法来管理的,就好像这个对象是电视机,三个人是三个线程,那么电视机的遥控器就是这个锁,假如现在A拿着遥控器,电视机调用wait方法,那么A就交出自己的遥控器,由jVM虚拟机调度,遥控器该交给谁。)【我想到一个好玩的例子:如果A拿遥控器的期间,他可以用自己的sleep每隔十分钟调一次电视台,而在他调台休息的十分钟期间,遥控器还在他的手上~】
区别三:
使用区域
由于wait函数的特殊意义,所以他是应该放在同步语句块中的,这样才有意义 。
注意:两个方法都需要抛出异常
个人见解:有sleep和wait的第二个区别,引起了我对Java线程机制的一个疑问,目前还没有看过JDk这方面的源码(其实看了,是木有看懂),线程的同步管理,是不是由对象在调度,如果是对象在调度,那么JDK 1.5新引入的ReentrantLock机制就比synchronized关键字更值得提倡。因为他更能反映出这么一个机制来。好多人不能理解wait和sleep的区别,我认为就是因为synchronized关键字的影响。当然自己还不懂JAVA的线程具体实现,留作疑问以后有时间继续研究吧
『捌』 java,for循环执行5000条数据分别进行调用5个平台的API,然后保存到本地数
没用过java,只用过c#,这类问题算是比较常见的生产和消费者问题,你搜索的时候也可以搜索java 生产消费者去查找,你的算法应该算是效率很低的,如果一次只处理一条数据的话,对于不同的淘宝当当之类的是可以同时开不同线程的,另外当然也可以一次处理多条数据,效率就会更高一些。具体方法你网络一下java 生产消费者应该都可以找到答案。
『玖』 JAVA for循环比如我的长度是10000,每循环到500个的时候休眠一段时间,接着500*n+1开始执行
for(int i=1; i<=10000; i++){
///////////////////////////
if(i%500==0){
try{Thread.sleep(5000);}catch(InterruptedException ex){}
}
///////////////////
}