当先锋百科网

首页 1 2 3 4 5 6 7

Java多线程和并发是Java语言开发中非常重要的一个部分。Java中的多线程使得程序可以同时执行多个任务,从而提高了程序的性能和效率。

Java的多线程基于线程对象的概念,每个线程对象都有一个独立的执行路径。Java中的线程对象可以通过继承Thread类或实现Runnable接口来创建。一般来说,实现Runnable接口是更好的方法,因为Java不支持多继承,使用Runnable接口可以避免这个问题。

public class MyThread implements Runnable {
private String name;
public MyThread(String name) {
this.name = name;
}
@Override
public void run() {
for(int i=0; i<10; i++) {
System.out.println(name + " : " + i);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Main {
public static void main(String[] args) {
Thread t1 = new Thread(new MyThread("Thread 1"));
Thread t2 = new Thread(new MyThread("Thread 2"));
t1.start();
t2.start();
}
}

上述代码是一个使用Runnable接口创建的多线程示例,其中MyThread类是Runnable接口的实现,用于定义线程要执行的代码。在Main类中,我们创建了两个MyThread对象,并将它们分别作为参数传递给Thread类的构造方法中,然后调用start()方法来启动线程执行。

Java中的并发主要是通过同步和锁机制来实现的。在多线程环境下,如果多个线程同时操作同一个共享变量或资源,就会出现竞争条件。为了避免这种情况,Java提供了synchronized关键字和Lock机制来实现线程的同步。

public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
Thread t1 = new Thread(() ->{
for(int i=0; i<1000; i++) {
counter.increment();
}
});
Thread t2 = new Thread(() ->{
for(int i=0; i<1000; i++) {
counter.increment();
}
});
t1.start();
t2.start();
try {
t1.join();
t2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Count : " + counter.getCount());
}
}

上述代码是一个使用synchronized关键字实现的线程同步示例。其中Counter类表示一个计数器对象,increment()方法是计数器加1的方法,在方法上加上synchronized关键字可以保证同一时间只有一个线程在执行该方法。Main类中创建了两个线程分别执行increment()方法,最终输出计数器的值。

Java多线程和并发是Java开发中非常重要的概念,需要理解和掌握。