线程lock condition使用
下面是具体例子,一直抛错,搞不懂应该怎么用了;求修改求思想
package com.sixth.exam;
import java.util.concurrent.locks.*;
public class T3{
public static void main(String[] args)
{
ReentrantLock lock=new ReentrantLock();
PrintThread pt=new PrintThread(lock);
Thread t=new Thread(pt);
t.start();
}
}
class PrintThread implements Runnable
{
ReentrantLock lock;
Condition condition;
PrintThread1 pt1;
Thread t1;
public PrintThread(ReentrantLock lock)
{
this.lock=lock;
condition=lock.newCondition();
pt1=new PrintThread1(lock);
t1=new Thread(pt1);
}
public void run()
{
t1.start();
for(int i=3;i>=0;i--)
{
System.out.println(i+"....");
if(i==1)
{
System.out.println("起床啦");
condition.signalAll();
}
}
}
}
class PrintThread1 implements Runnable
{
ReentrantLock lock;
Condition condition;
public PrintThread1(ReentrantLock lock)
{
this.lock=lock;
condition=lock.newCondition();
}
public void run()
{
try {
lock.newCondition().await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("复活了~");
}
}
package com.sixth.exam;
import java.util.concurrent.locks.*;
public class T3{
public static void main(String[] args)
{
ReentrantLock lock=new ReentrantLock();
PrintThread pt=new PrintThread(lock);
Thread t=new Thread(pt);
t.start();
}
}
class PrintThread implements Runnable
{
ReentrantLock lock;
Condition condition;
PrintThread1 pt1;
Thread t1;
public PrintThread(ReentrantLock lock)
{
this.lock=lock;
condition=lock.newCondition();
pt1=new PrintThread1(lock);
t1=new Thread(pt1);
}
public void run()
{
t1.start();
for(int i=3;i>=0;i--)
{
System.out.println(i+"....");
if(i==1)
{
System.out.println("起床啦");
condition.signalAll();
}
}
}
}
class PrintThread1 implements Runnable
{
ReentrantLock lock;
Condition condition;
public PrintThread1(ReentrantLock lock)
{
this.lock=lock;
condition=lock.newCondition();
}
public void run()
{
try {
lock.newCondition().await();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("复活了~");
}
}
...全文
相关推荐
java中的Lock类和Condition类.docx
在实际开发中,根据具体需求选择使用synchronized还是Lock,能帮助我们编写出更加高效、安全的并发代码。
Java使用Condition控制线程通信的方法实例详解
唤醒操作:使用 Condition 的 signal() 方法可以唤醒在该 Lock 对象上等待的单个线程。如果所有线程都在该 Lock 对象上等待,则会选择唤醒其中一个线程。
Java多线程基础——Lock类
在实际应用中,使用Lock类可以提供更精细的控制,比如在多线程环境下,当需要控制多个条件或者更复杂的同步策略时,Lock就显得更有优势。
Java编程中实现Condition控制线程通信
通过熟练掌握Condition的使用,开发者可以编写出更加高效和可靠的多线程程序。
Java Lock锁多线程中实现流水线任务
在每个方法中,我们使用Lock锁来锁定当前线程,然后使用Condition对象来实现线程之间的通信。


