浅谈一下Java的线程并发

网友投稿 418 2022-08-29


浅谈一下Java的线程并发

谈到并发,必会涉及操作系统中的线程概念,线程是CPU分配的最小单位,windows系统是抢占式的,linhttp://ux是轮询式的,都需要获取CPU资源。并行:同一时刻,两个线程都在执行。并发:同一时刻,只有一个线程执行,但是一个时间段内,两个线程都执行了。java中创建线程的三种方式,分别为集成Thread类、实现Runnable接口,实现Callable接口。

示例

public class ThreadTest {

public static class MyThread extends Thread {

@Override

public void run() {

System.out.println("This is a thread");

}

}

public static void main(String[] args) {

MyThread myThread = new MyThread();

myThread.start();

}

}

public class RunnableTest implements Runnable {

@Override

public void run() {

System.out.println("Runnable!");

}

public static void main(String[] args) {

RunnableTest runnableTest = new RunnableTest();

new Thread(runnableTest).start();

}

}

public class CallableTest implements Callable {

@Override

public String call() thjgmUrhrows Exception {

return "Callable!";

}

public static void main(String[] args) {

FutureTask futureTask = new FutureTask<>(new CallableTest());

new Thread(futureTask).start();

try {

String result = futureTask.get();

System.out.println(result);

} catch (InterruptedException e) {

e.printStackTrace();

} catch (ExecutionException e) {

e.printStackTrace();

}

}

}

CountDownLatch理解成倒计数器场景:玩的王者荣耀,创建大乔、兰陵王、安其拉、哪吒和铠等五个玩家,主线程必须在他们都完成确认后,才可以继续运行。

public static void main(String[] args) throws InterruptedException {

CountDownLatch countDownLatch = new CountDownLatch(5);

Thread DaQiao = new Thread(countDownLatch::countDown);

Thread LanLingWang = new Thread(countDownLatch::countDown);

Thread AnQiLa = new Thread(countDownLatch::countDown);

Thread NeZha = new Thread(countDownLatch::countDown);

Thread Kai = new Thread(() -> {

try {

// 稍等,上个卫生间,马上到...

Thread.sleep(1500);

countDownLatch.countDown();

} catch (InterruptedException ignored) {}

});

DaQiao.start();

LanLingWang.start();

AnQiLa.start();

NeZha.start();

Kai.start();

countDownLatch.await();

System.out.println("所有玩家已经就位!");

}

CyclicBarrier可以理解成同步屏障场景:让一 组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续运行。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Python3 元组
下一篇:Python3 数字(Number)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~