在主线程中创建了一个线程,该线程休眠50ms然后给变量i赋值。主线程要等该子线程结束后获得并输出i的值,使程序的输出结果如下: j=10 ,a.i=10 public class Java_2 { public static void main (String args[]) { try { Sleep a = new Sleep (); Thread t = new Thread (a); //*********Found********** t._____________(); t.join(); int j= a.i; System.out.println("j="+j+",a.i="+a.i); } catch (Exception e) {} } } //*********Found********** class Sleep implements _________________{ int i; public void run () { try { //*********Found********** Thread._______________(50); i= 10; } catch(InterruptedException e) {} } }
时间: 2023-07-19 15:54:43 浏览: 76
public class Java_2 {
public static void main (String args[]) {
try {
Sleep a = new Sleep ();
Thread t = new Thread (a);
t.start();
t.join();
int j= a.i;
System.out.println("j="+j+",a.i="+a.i);
} catch (Exception e) {}
}
}
class Sleep implements Runnable{
int i;
public void run () {
try {
Thread.sleep(50); //线程休眠50ms
i= 10;
} catch(InterruptedException e) {}
}
}
相关问题
在主线程中创建了一个线程,该线程休眠50ms然后给变量i赋值。主线程要等该子线程结束后获得并输出i的值,使程序的输出结果如下: j=10 ,a.i=10 public class Java_2 { public static void main (String args[]) { try { Sleep a = new Sleep (); Thread t = new Thread (a); //Found* t._____________(); t.join(); int j= a.i; System.out.println("j="+j+",a.i="+a.i); } catch (Exception e) {} } } //Found* class Sleep implements __{ int i; public void run () { try { //Found* Thread.(50); i= 10; } catch(InterruptedException e) {} } }
本题的答案如下:
```
public class Java_2 {
public static void main (String args[]) {
try {
Sleep a = new Sleep ();
Thread t = new Thread (a);
t.start();
t.join();
int j = a.i;
System.out.println("j=" + j + ",a.i=" + a.i);
} catch (Exception e) {}
}
}
class Sleep implements Runnable {
int i;
public void run () {
try {
Thread.sleep(50);
i = 10;
} catch(InterruptedException e) {}
}
}
```
解析:
1. 在 main() 方法中创建 Sleep 对象 a,并创建线程对象 t,并启动该线程。
2. 在线程 t 启动后,主线程通过 t.join() 方法等待线程 t 执行结束。
3. 在 Sleep 类中,实现 Runnable 接口,重写 run() 方法,该方法中让线程休眠50ms,然后将变量 i 赋值为 10。
4. 在主线程中,获取 Sleep 对象 a 中的变量 i 的值,并打印输出。
帮我写一个c语言多线程,传递一个int型参数,在子线程中对参数进行赋值操作
好的,以下是一个简单的 C 语言多线程程序,它会创建一个新的线程,在子线程中对传递的 int 型参数进行赋值操作:
```c
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void* thread_func(void* arg) {
int* num_ptr = (int*) arg; // 将传递的参数转换为 int 指针
*num_ptr = 123; // 在子线程中对参数进行赋值操作
pthread_exit(NULL);
}
int main() {
pthread_t thread;
int num = 0;
// 创建新的线程,并将参数传递给子线程
if (pthread_create(&thread, NULL, thread_func, &num)) {
fprintf(stderr, "Error creating thread.\n");
return 1;
}
// 等待子线程结束
if (pthread_join(thread, NULL)) {
fprintf(stderr, "Error joining thread.\n");
return 1;
}
printf("The value of num is: %d\n", num);
return 0;
}
```
在这个例子中,我们使用 pthread 库来创建和管理多线程。在主线程中,我们定义了一个整型变量 num,并将它的地址传递给子线程。在子线程中,我们将传递的参数转换为 int 型指针,并对它进行赋值操作。最后,我们使用 pthread_join 函数等待子线程结束,并输出 num 的值。
需要注意的是,当我们在子线程中对参数进行赋值操作时,需要保证主线程和子线程不会同时访问同一个变量,否则可能会导致数据竞争和不可预测的结果。在此例中,我们将 num 的地址传递给子线程,保证了子线程和主线程使用的是同一个变量。