java学习笔记之线程2

来源:互联网 发布:怎么刷新微信运动数据 编辑:程序博客网 时间:2024/06/06 15:01

java学习笔记之线程2

今天接着上次的的同步说起,从“Synchronization”这个关键词说起:

第一篇文章说到,我同步的去做两件事,是靠我的思想去协调的,才能同步来做写博客和睡觉两件事情。程序是没有脑子和思想的(这句话说的不够严谨,其实已经可以让程序有思想了,很久以前就有关于神经网络的研究了)—-水太深


神经计算机公司的创立者 Dr. Robert Hecht-Nielsen对神经网络的定义:神经网络是由多个简单的处理单元彼此按照某种方式相互连接而形成的计算机网络系统,该系统通过对外部输入信息的动态响应来处理信息。

由于水平很有限!先不研究神经网络这么高深的东西,我们用一些算法也能实现线程的同步(神经网络也算一种算法吧),在java中不用你自己去写这些算法,发明java的大神们已经给你写好了,你去调用就好,是去调方法吗?no no no,在java中有这么一个关键字:Synchronized你可以把它看做一个同步管理员,这个管理员会去协调线程同步执行,那我们先来看看它是怎么用的(能看到Synchronized的底层源码就好了,底层应该是c语言写的,有时间看看能不能找到)

下面我们看看用这个管理员怎么去协调多个线程的同步的:
我们先看看如果没有Synchronized这个管理员,程序在执行线程的时候是什么结果:

   **************************看一段代码:**************************
package thread;/** * Synchronized关键字的简单用法Demo1 * 这儿我把测试类和线程类写在了一起,方便 * 大家看 * @author Administrator * */public class SimpleSynchronizedDemo1 {    public static void main(String[] args) {        /*         * 先创建写博客,睡觉两个线程,具体的创建过程大家可以参考javaSE         */         Thread writeBlog = new Thread(new WriteBlog());        Thread sleep = new Thread(new Sleep());        /*        * 让两个线程调用start()方法,让它们都处于Runnable状态        * 只要他们获取cpu时间片,就会执行(Running)        */        writeBlog.start();        sleep.start();    }}/*** 写博客的线程*/class WriteBlog implements Runnable{    @Override    public void run() {        System.out.println("我开始写博客了");        System.out.println("我写完博客了");    }}/*** 睡觉的线程*/class Sleep implements Runnable{    @Override    public void run() {        System.out.println("我开始睡觉了");        System.out.println("我睡完觉了");    }}

我们看看执行两侧的效果:
这里写图片描述

这里写图片描述

从图可以看出上面两个线程不是同步执行的!
今天周末太累了,先写到这里,休息下,下周再写
到时更新会把链接放在下面,谢谢大家!

这是线程3的链接

这是线程3的链接

原创粉丝点击