在JAVA中运用创建多线程,对多线程的控制,多线程通信等相关知识进行详细点的代码的编写
时间: 2024-02-11 10:04:30 浏览: 20
好的,以下是一个简单的多线程程序,其中包括了多线程的创建、控制和通信的相关知识:
```java
public class MultiThreadDemo {
public static void main(String[] args) {
// 创建两个线程并启动
Thread thread1 = new Thread(new MyRunnable("Thread1"));
Thread thread2 = new Thread(new MyRunnable("Thread2"));
thread1.start();
thread2.start();
// 控制线程的执行顺序
try {
thread1.join(); // 等待线程1执行完毕
thread2.join(); // 等待线程2执行完毕
} catch (InterruptedException e) {
e.printStackTrace();
}
// 线程间的通信
System.out.println("共享资源的值为: " + MyRunnable.sharedResource);
}
}
class MyRunnable implements Runnable {
public static int sharedResource = 0; // 共享资源
private String name; // 线程名称
public MyRunnable(String name) {
this.name = name;
}
@Override
public void run() {
// 对共享资源的操作
for (int i = 0; i < 10; i++) {
synchronized (MyRunnable.class) { // 加锁
sharedResource++;
}
System.out.println(name + "执行第" + (i + 1) + "次,共享资源的值为: " + sharedResource);
try {
Thread.sleep(100); // 线程休眠
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
```
在这个程序中,我们创建了两个线程并启动,这两个线程共享一个静态变量sharedResource。在每个线程的run方法中,我们对这个共享资源进行了操作,并且使用synchronized关键字进行了加锁,以避免多个线程同时修改这个资源导致的数据错误。通过线程间的通信,我们最终输出了共享资源的值。
同时,在程序的主线程中,我们使用join方法控制了线程的执行顺序,保证了线程2在线程1执行完毕后才开始执行。