我已将此shell脚本编写为JAR文件的包装器.该脚本可以毫无问题地启动JAR,但无需等待JAR完成其工作即可完成.
#!/bin/bash
export WORK=/opt/conversion
export LOG=$WORK
export XMAIL=me@email.com
export JAVA_BASE=/usr/java/jdk1.6.0_06
export JAVA_HOME=/usr/java/jdk1.6.0_06/bin
export JAR=$WORK/conversion.jar
export CLASSPATH=$JAVA_BASE/lib/tools.jar
export CLASSPATH=$CLASSPATH:$WORK/lib/ojdbc14.jar
export CLASSPATH=$CLASSPATH:$JAR
$JAVA_HOME/java -Xms256M -Xmx512M -classpath $CLASSPATH com.myapp.cam.conversion >>$WORK/job.out 2>&1 &
echo $! > $WORK/job.pid
mail -s "Conversion" $XMAIL < $WORK/user_message
exit 0
Run Code Online (Sandbox Code Playgroud)
有没有办法让脚本等待我的JAR文件完成?
感谢您的输入.
我会说这个简短的:
在Wicket中有一个方法/库显示活动指示器吗?你知道,在用户等待的时候移动的旋转东西,还是只是一个javascript的东西?
谢谢你的帮助.
有没有反正,使A级调用notify(),它内部的,清醒的等待()该对象的锁的线程,在后台运行一个线程?
谢谢.
编辑:
请忽略不必要的代码.我想告诉你我是如何真正实现它的.
Messenger是一个序列化对象.
线程"ServerHandler"将调用
bufferImpObject.put(<Messenger Obj>, <ServerHandler instance>, <socket instance>)
public class BufferImp {
private Messenger[] requests;
public static int req_size;
public static int req_count;
Socket s;
Messenger msg;
InputStream is;
ObjectInputStream ois;
OutputStream os;
ObjectOutputStream oos;
public BufferImp(int size) {
this.req_size = size;
this.req_count = 0;
requests = new Messenger[size];
}
class CheckWaitThread extends Thread{
Thread t;
String s;
Socket incoming_socket;
CheckWaitThread(String s, Thread t, Socket incoming_socket){
this.t = t;
this.s = s; …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
#include <stdio.h>
main(int argc, char *argv[])
{
int n,st;
n = atoi(argv[1]);
while(n*fork()) {
printf("%d %d\n",getpid(), getppid());
n--;
printf("%d\n", wait(&st));
printf("------\n");
}
}
Run Code Online (Sandbox Code Playgroud)
我执行此代码,我得到以下结果:
bash-3.2$ ./test 3
10218 9948
10219
------
10218 9948
10220
------
10218 9948
10221
------
Run Code Online (Sandbox Code Playgroud)
这是我的想法: 父母正在创造一个孩子:
10218 9948
Run Code Online (Sandbox Code Playgroud)
但之后,我不明白为什么printf("%d\n", wait(&st));返回这个id:10219.
本wait()应该返回终止子的ID.
有人可以帮忙吗?!
我想在我的while循环内等待1秒,每次它在循环内.
我尝试使用Runnable:
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
int i=0;
while(i<10){
if(i%2 ==0){
myTextView.setText("true");
}
else{
myTextView.setText("false");
}
i++;
}
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码,我会得到一个空白显示几分钟然后崩溃.
logcat的:
ActivityManager Reason: keyDispacthingTimeot
Run Code Online (Sandbox Code Playgroud)
问题是什么?我想让它尽可能简单......
请帮忙!
全部,我想更新一个ToolStripMenu以显示SqlConnection失败.我希望错误消息显示一段时间timeToWaitMs(以毫秒为单位),然后在一段时间和一些操作后刷新UI回到正常状态.目前我正在做(删除了一些不必要的细节)
public void ShowErrorWithReturnTimer(string errorMessage, int timeToWaitMs = 5000)
{
// Update the UI (and images/colors etc.).
this.toolStripLabelState.Text = errorMessage;
// Wait for timeToWait and return to the default UI.
Task task = null;
task = Task.Factory.StartNew(() =>
{
task.Wait(timeToWaitMs);
});
// Update the UI returning to the valid connection.
task.ContinueWith(ant =>
{
try
{
// Connection good to go (retore valid connection update UI etc.)!
this.toolStripLabelState.Text = "Connected";
}
finally
{
RefreshDatabaseStructure();
task.Dispose(); …Run Code Online (Sandbox Code Playgroud) 我在一个Iterator实例中有一个生成器,它next()在迭代器上每次生成并返回一个项目.它似乎有点工作,但我得到了null返回的价值.
班级代码:
package spiral;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
*
* @author student
*/
public class Spiral7DGenerator implements Iterator<List<Integer>> {
private boolean releaseNext = false;
private List<Integer> releaseList;
public Spiral7DGenerator() {
new Thread(new Runnable() {
@Override
public void run() {
for (int t = 0; true; t++) {
loops(t);
}
}
}).start();
}
@Override
public boolean hasNext() {
return true;
}
@Override
public List<Integer> next() { …Run Code Online (Sandbox Code Playgroud) 难道一个while(true)共同的Java循环与wait(1)利用更多或更少的资源比用封闭循环wait()和notify()?
CPU内核是否允许一些特殊(硬件)实现wait(1)?如果是,使用这种非阻塞循环时是否有任何限制?
一个例子:
while(true){
wait(1);
//do the job here...
}
Run Code Online (Sandbox Code Playgroud)
(只是一个注意事项:如果没有wait(1)一个核心将在while(true)循环中100%激进......)
这不是代码审查,因为我不了解代码的完整概念.如果仍然应该移动,请告诉我.
我有一些代码,我想解释一下我的想法,我希望有人可以告诉我我哪里出错或者感到困惑,因为我仍然不完全确定发生了什么.
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid, pid1;
pid = fork();
if (pid < 0) {
fprintf (stderr, “fork() failed\n”);
return(1);
}
else if (pid == 0) {
pid1 = getpid();
printf (“pid = %d\n”, pid); // A
printf (“pid1 = %d\n”, pid1); // B
}
else {
pid1 = getpid();
printf (“pid = %d\n”, pid); // C
printf (“pid1 = %d\n”, pid1); // D
wait (NULL);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
据我所知,我们有两个进程ID,父进程(pid)和子进程(pid1).一旦我打电话pid = …
请参阅本文底部的代码.它应该在列表框中添加"3",然后在一秒钟后添加"2",然后在一秒钟后添加"1",然后运行程序的主代码.但是,一旦我执行程序,它就会保持3秒钟的空白,然后显示所有的3,2和1,之后所有代码都会直接启动.我想在视觉上看到每个数字都显示一秒延迟.我该怎么做呢?
private void Main()
{
countdown();
//Main Code
}
private void countdown()
{
listBox1.Items.Clear();
listBox1.Items.Add("3");
System.Threading.Thread.Sleep(1000);
listBox1.Items.Add("2");
System.Threading.Thread.Sleep(1000);
listBox1.Items.Add("1");
System.Threading.Thread.Sleep(1000);
listBox1.Items.Clear();
}
Run Code Online (Sandbox Code Playgroud)