常见的TCP端口号
FTP 20
Telnet 23
SMTP 25
Time 37
HTTP 80
HTTPS 443
//一般用下面的方法启动新线程,而不是继承Thread类(当然这也是合法的)
public static void main(String[] args){
Runnable mt = new MyThread();//MyThread的对象引用也行
Thread th = new Thread(mt);
th.start();
}
class MyThread implements Runnable
{
public void run() {
go();
}
public void go()
{
System.out.println("启动了");
}
}
synchronized关键词来修饰方法使它每次只能被单一的线程存取。
每个对象都有锁,大部分时间都没有锁上,并且你可以假设有个虚拟的钥匙随侍在旁。对象的锁只会在同步化的方法上起作用。当对象有一个或多个同步化的方法时,线程只有在取得对象锁得钥匙时才能进入同步化的方法(进入其他方法不需要锁)。所以,如果对象有两个同步化的方法,就表示两个线程无法进入同一个方法,也表示两个线程无法进入不同的方法(因为钥匙只有一个)。
每个类也有一个锁,当要对静态方法做同步化时,java会使用类本身的锁。如果一个类有两个被同步化的静态方法,线程需要去得类的锁才能进入这些方法。
不能依靠线程优先级来维持程序的正确性,没有绝对的事,只能用来影响执行性能。
事实上同步化的规模可以小于方法全部,可以用synchronized来修饰一行或数行的指令而不必整个方法都同步化。代码如下
public void go()
{
doStuff();
synchronized(this)
{
f1();
f2();
}
}
同步化可能产生死锁:java没有处理死锁的机制
线程A进入foo对象的同步化的方法,拿着钥匙a,睡着
线程B进入bar对象的同步化的方法,拿着钥匙b
B想要进入A正在执行的方法,所以只好等。
A醒来后,要进入B正在执行的方法,但拿不到钥匙b,只好等
A,B一直在那等着对方的钥匙。。。
避免死锁,自己的看法:
1 可以设定一种机制,当发现有线程等待过长时,可以让其中一个线程“回滚”。
2 让所有的线程按照同样的顺序获得一组锁.这种方法消除了 X 和 Y 的拥有者分别等待对方的资源的问题.
3 将多个锁组成一组并放到同一个锁下
4 最重要的是,在编写代码前认真仔细地设计整个系统.多线程是困难的,在开始编程之前详细设计系统能够帮助你避免难以发现Java线程死锁的问题
分享到:
相关推荐
多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和网络多线程和...
网络编程和多线程网络编程和多线程网络编程和多线程网络编程和多线程网络编程和多线程网络编程和多线程
VC++多线程与网络
多线程和网络编程
多线程网络下载,修改网络地址即可用
这是运用Qt5.3.0编写的,网络多线程编写的传输软件,包括服务器模式和客户端模式。可以获取本地端和远程端文件目录,以及客户端上传功能和服务器端接收功能。
多线程网络文件传输的设计与实现 多线程网络文件传输的设计与实现 多线程网络文件传输的设计与实现
java代码,计算机网络基础多线程通信实例。修改路径以访问自己机器指定路径的文件,已有可访问类型:网页、文本、图片
多线程、网络编程多线程、网络编程多线程、网络编程多线程、网络编程多线程、网络编程多线程、网络编程
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...
Linux多线程服务端编程:使用muduo+C网络库.pdf Linux多线程服务端编程:使用muduo+C网络库.pdfLinux多线程服务端编程:使用muduo+C网络库.pdfLinux多线程服务端编程:使用muduo+C网络库.pdfLinux多线程服务端编程:...
线程实现的Android访问网络资源,适用于Android4.0以上的Android开发.zip
基于Java的多线程网络爬虫设计与实现.txt
基本的单线程网络编程 基本的单线程网络编程 基本的单线程网络编程 基本的单线程网络编程 基本的单线程网络编程 基本的单线程网络编程
获取网络时间,对时线程1,对时线程2,对时线程3,对时线程4,对时线程5,对时线程6,对时线程7
本书主要讲述采用现代C++ 在x86-64 Linux 上编写多线程TCP 网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。这是在Linux 下以native 语言编写用户态高性能...
线程是程序中完成一个独立任务的完整执行序列,即一个可调度的实体;进程相当于运行中程序的一种抽象。根据运行环境的调度者的身份,线程可分为内核线程和用户线程。内核线程,在有的系统上称为LWP(Light Weight ...
网络协议+线程的一个模拟银行列子的案列 运用java代码实现
线程,托盘技术,网络开发,网络。线程,托盘技术网络开发,网络。线程,托盘技术网络开发,网络。线程,托盘技术网络开发,网络。线程,托盘技术网络开发,网络。线程,托盘技术网络开发,网络。线程,托盘技术网络...
基于多线程的网络爬虫设计与实现.pdf基于多线程的网络爬虫设计与实现.pdf基于多线程的网络爬虫设计与实现.pdf基于多线程的网络爬虫设计与实现.pdf