7.1 任务的取消
任务应该是可取消的:在run的外界可以让其状态从运行变为终止。
需要取消任务的场景:
1、用户取消任务,如点击了“取消”
2、时间timeout限制的任务
3、程序外部事件需要处理。
4、出错
5、关闭、退出、清理
Java中没有原生提供“停止线程”的方法,但可以使用“bool标志位+volatile”的方式来实现,注意list还是需要被锁保护的。
@ThreadSafe
public class PrimeGenerator[......]
7.1 任务的取消
任务应该是可取消的:在run的外界可以让其状态从运行变为终止。
需要取消任务的场景:
1、用户取消任务,如点击了“取消”
2、时间timeout限制的任务
3、程序外部事件需要处理。
4、出错
5、关闭、退出、清理
Java中没有原生提供“停止线程”的方法,但可以使用“bool标志位+volatile”的方式来实现,注意list还是需要被锁保护的。
@ThreadSafe
public class PrimeGenerator[......]
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class Main {
static ExecutorService exec = Executors.newFixedThreadPool(5);
public static void main(St[......]
6.1 在线程中执行任务
在多线程开发中,要执行多线程任务,第一步是“找出任务边界”。
一个好的并发服务器是:大吞吐量,低响应时间。当系统过载的时候,只是性能降低而不会崩溃。
网络服务器为多线程提供了自然的任务边界:每一个客户端的请求。例如Web服务器、Mail服务器、文件服务器、EJB容器、数据库服务器都接受这种请求。各个客户端之间的请求应该是互补影响的。
单线程服务器
class SingleThreadWebServer {
public static v[......]
1、安装
yum install vsftpd
2、启动
/etc/init.d vsftpd start
3、配置
vim /etc/vsftpd/vsftpd.conf
更改为下列选项
#禁止匿名
anonymous_enable=NO
#可以写入
write_enable=YES
#Nginx多用户共享的需求
local_umask=002
#所有用户不能离开家目录
chroot_local_user=YES
#只允许userlist_file中列出的用户登录[......]