㈠ 如何实现java线程的暂停和重新启用
JAVA中线程开始有start方法,暂停用sleep(time)方法,线程停止用stop方法,线程等待wait方法,java 中没有线程重启一说,只能说线程唤醒()或是notify方法,前一个notifyAll()方法是唤醒所有的已休眠或是等待状态下的线程。具体的一种参数请参照JDK文档。
㈡ java中通过wait()和notify()实现线程暂停和重启,问题如下,求高手帮忙
wait并不是调用的那个线程被阻塞,是谁调用,谁被阻塞。
下边是例子
importjava.awt.BorderLayout;
importjava.awt.FlowLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
,Runnable{
privateTestThreadthread=null;
publicTestApp(){
JPanelbuttons=newJPanel();
FlowLayoutlayout=newFlowLayout(FlowLayout.CENTER);
buttons.setLayout(layout);
add(buttons,BorderLayout.NORTH);
JButtonbtn=newJButton("pause");
btn.addActionListener(this);
buttons.add(btn);
JLabellabel=newJLabel();
add(label,BorderLayout.CENTER);
setSize(800,600);
setLocationRelativeTo(null);
setDefaultCloseOperation(EXIT_ON_CLOSE);
setVisible(true);
thread=newTestThread(label);
thread.start();
}
publicstaticvoidmain(String[]args){
newTestApp();
}
publicvoidactionPerformed(ActionEvente){
JButtonbtn=(JButton)e.getSource();
if("pause".equals(btn.getText())){
btn.setText("start");
thread.callWait();
}else{
btn.setText("pause");
thread.call();
}
}
publicvoidrun(){
}
}
classTestThreadextendsThread{
privatebooleanisWait=false;
privateJLabellabe=null;
publicTestThread(JLabellabe){
this.labe=labe;
}
publicvoidrun(){
intindex=0;
while(true){
try{
if(isWait){
wait();
}
labe.setText(""+(++index));
sleep(500);
}catch(Exceptione){
}
}
}
(){
isWait=true;
}
publicsynchronizedvoidcall(){
isWait=false;
notify();
}
}
㈢ java 多线程 重启
您好,线程停止了就结束了,所以你若想让你一个线程停止了又能再重新开始,那只能让这个线程sleep。
如下一段代码就可以实现你的需求了,希望你能看懂!!
package com.lxh.;
public class ThreadRestart extends Thread {
private static int i = 0;
@Override
public void run() {
while(true) {
// 这里用来判断线程是否继续停止,不执行代码逻辑
if(i == 1) {
try {
sleep(100);
System.out.println("........");
continue;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
// 假设这是你线程中的一段逻辑
{
System.out.println("Happy Happy....");
}
}
}
public static void main(String[] args) throws Exception {
ThreadRestart threadTest = new ThreadRestart();
threadTest.start();
for (int j = 0; j < 20; j++) {
// 假设执行如下一段代码逻辑时,让线程threadTest执行
{
i = 0;
Thread.sleep(2000);
}
// 假设执行如下的一段代码逻辑后,让线程threadTest停止执行
{
i = 1;
Thread.sleep(2000);
}
}
// 退出整个程序
System.exit(0);
}
}
㈣ JAVA如何重新启用一个线程
java实现多线程有2种方法:1扩展java.lang.Thread类;2实现java.lang.Runnable接口 下面举个例子,实现Runnable,来实现多线程 public class DoSomething implements Runnable { //实现Runnable接口 public void run() { // 实现run方法 for (int i = 0; i < 5; i++) { // 重复5次 System.out.println("次线程do something"); try { Thread.sleep(1000); //休眠1秒 } catch (Exception e) {} } } public static void main(String[] args) { DoSomething dothing = new DoSomething(); Thread t1 = new Thread(dothing); t1.start(); //这里就是楼主提的问题,启动线程,执行上面写的run()方法 for (int i = 0; i < 5; i++) { //主线程 System.out.println("主线程do something"); try { Thread.sleep(1000); //休眠1秒 } catch (Exception e) {} } } }
㈤ java线程发生异常时怎么重新启动这个线程
for循环,try catch语句,在catch里截获异常,判断已经发生异常的次数,少于等于3遍,currentThread.interrupt() 大于3停止当前线程。
㈥ JAVA 线程重新启动问题
这个run函数的主体是一个while循环,既然没有break语句,那线程就不会结束。捕获异常以后会继续下一次循环。
更不需要start,因为已经start了。。。
㈦ JAVA中如何让一个线程意外终止后重新启动
新建一个线程,一直循环,每隔5分钟调用那6个Tread的isAlive()方法进行判断,如果返回为false则调用它们的start()方法。
㈧ 在java中什么办法可以让线程停止然后再重新启动它
1.你可以用布尔值来抄控制是否让袭线程运行。例:while(boolean isLive){} 当isLive为true线程就运行,否则不运行。
2.你可以用对象。例:while(Object o != null)当对象存在的时候线程就运行,否则不运行!
3.你可以用wait()方法来让线程等待,然后用notify()、notifyAll()在适当的时候唤醒线程、或者唤醒所有在些等待的线程!
例:一个挺不错的例子---吃馒头和做馒头。
一个线程做馒头,做好了放在篮子里(容量为10)。
一个线程吃馒头,从篮子里拿馒头吃(如果篮里有馒头)。
还有一点就是为了看到明显的等待效果,用一个随机数来决定做和吃的速度。这样就不会行成做一个,吃一个,篮子永远装不满的不理想效果!(最好就是做稍快于吃)
这时,当篮子满了,你就应该调用wait()方法来让做的线程等待,让吃的线程将篮子腾出空间放馒头。同时,吃的线程也应该通知做的线程可以做馒头了(就应该调用notify()来唤醒做的线程)。
这个例子应该就是你想要的“停止”后再重新启动吧!
如果你说的是完全停止(死了),那就不行了!