线程的一些杂记

来源:互联网 发布:淘宝发表论文 编辑:程序博客网 时间:2024/05/22 11:58

线程这个东西只有实践才能出真知,工作上需求少,但是业余还是要偶尔锻炼下的,有意思的题目就放在这里,然后实现下

子线程循环 10 次,接着主线程循环 100 次,接着又回到子线程循环 10 次,接着再回到主线程又循环 100 次,如此循环50次,试写出代码。

用锁的概念实现才是正理,注意object这个静态变量,这个样子写,可以很清晰的synchronized,wait,notify的关系

public class test {private static Object object = new Object();public static void main(String[] args) throws InterruptedException {// TODO Auto-generated method stubnew Thread(new Runnable() {public void run() {// TODO Auto-generated method stubfor (int i = 0; i < 50; i++) {synchronized (object) {if(i==0){System.out.println("===");}object.notify();for (int j = 0; j < 10; j++) {//System.out.println("子循环在循环:ThreadCount == " + (j+1));}System.out.println("子循环执行了 --->"+(i+1)+"个10次");//try {if(i!=49){object.wait();}else{}} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}}).start();for(int i = 0; i < 50; i++){synchronized (object) {//主线程让出锁,等待子线程唤醒//object.notify();object.wait();for (int j = 0; j < 100; j++) {//System.out.println("主循环在循环:MainCount == " + (j+1));}System.out.println("主循环执行了 --->"+(i+1)+"个100次");//object.notify();object.notify();if(i!=49){//object.wait();}}}}}

0 0
原创粉丝点击