• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

线程间定制化通信

uqm13gz2lal4545.png

方案:给每个线程定义一个标志位。

包JUC.lock

导入Java。util。并发。锁。条件;

导入Java。util。并发。锁。锁;

导入Java。util。并发。锁。重入锁;

//第一步创建资源类,定义属性和操作方法

类共享资源{

//定义标志位

私有int标志=1;//1 AA 2 BB 3 CC

//创建锁锁

final Lock Lock=new reentrant Lock();

//创建三个情况

最终条件C1=锁定。新条件();

最终条件C2=锁定。新条件();

最终条件C3=锁定。新条件();

//打印5次,参数第几轮

公共无效打印5(整数循环)引发中断的异常{

//上锁

锁定。lock();

尝试{

//判断

而(旗!=1){

C1。await();

}

//干活

for(int I=1;I=5;i ) {

系统。出去。println(线程。当前线程().getName() ' : ' i ' :轮数:'循环);

}

//修改标志位

flag=2;

//通知

C2。signal all();

}最后{

//解锁

锁定。unlock();

}

}

//打印10次,参数第几轮

公共无效打印10(int循环)引发中断的异常{

//上锁

锁定。lock();

尝试{

//判断

而(旗!=2){

C2。await();

}

//干活

for(int I=1;i=10i ) {

系统。出去。println(线程。当前线程().getName() ' : ' i ' :轮数:'循环);

}

//修改标志位

flag=3;

//通知

C3。signal all();

}最后{

//解锁

锁定。unlock();

}

}

//打印15次,参数第几轮

公共无效打印15(int循环)引发中断的异常{

//上锁

锁定。lock();

尝试{

//判断

而(旗!=3){

C3。await();

}

//干活

for(int I=1;i=15i ) {

系统。出去。println(线程。当前线程().getName() ' : ' i ' :轮数:'循环);

}

//修改标志位

flag=1;

//通知

C1。signal all();

}最后{

//解锁

锁定。unlock();

}

}

}

公共类线程演示3 {

公共静态void main(String[] args) {

共享资源share resource=new share resource();

新线程(()- {

for(int I=1;i=10i ) {

尝试{

共享资源。打印5(I);

} catch (InterruptedException e) {

e。printstacktrace();

}

}

},' AA ').start();

新线程(()- {

for(int I=1;i=10i ) {

尝试{

共享资源。打印10(I);

} catch (InterruptedException e) {

e。printstacktrace();

}

}

},' BB ').start();

新线程(()- {

for(int I=1;i=10i ) {

尝试{

共享资源。打印15(I);

} catch (InterruptedException e) {

e。printstacktrace();

}

}

},'抄送')。start();

}

}

Link to comment
Share on other sites